.net MVCページのページリクエストを模擬するにはどうすればよいですか?asp.net MVCでのユニットテスト、どのように私はページリクエストを模擬しますか?
8
A
答えて
15
RhinoMocksを使用する:
var httpContext = MockRepository.GenerateMock<HttpContextBase>();
var httpRequest = MockRepository.GenerateMock<HttpRequestBase>();
httpContext.Expect(c => c.Request).Return(httpRequest).Repeat.Any();
... set up expectations on request...
var controller = new MyController();
controller.ControllerContext = new ControllerContext(httpContext,
new RouteData(),
controller);
...invoke action, check assertions...
httpContext.VerifyAllExpectations();
httpRequest.VerifyAllExpectations();
11
Moqを使用する:
var request = new Mock<HttpRequestBase>(MockBehavior.Strict);
request.Setup(x => x.ApplicationPath).Returns("/");
request.Setup(x => x.Url).Returns(new Uri("http://localhost/home"));
request.Setup(x => x.ServerVariables).Returns(new System.Collections.Specialized.NameValueCollection());
var context = new Mock<HttpContextBase>(MockBehavior.Strict);
context.SetupGet(x => x.Request).Returns(request.Object);
var controller = new YourController();
controller.ControllerContext = new ControllerContext(context.Object, new RouteData(), controller);
11
手動で(私はテストごとのセットアップの8行が必要なモックフレームワークを嫌うので)
// in some common location, only once
public class MockHttpContext : HttpContextBase
{
public MockHttpRequest m_request = new MockHttpRequest();
public MockHttpResponse m_response = new MockHttpResponse();
public override HttpRequestBase Request
{ get { return m_request; } }
public override HttpResponseBase Response
{ get { return m_response; } }
}
public class MockHttpRequest : HttpRequestBase
{
// override whatever bits you want (eg cookies)
}
public class MockHttpResponse : HttpResponseBase
{
// override whatever bits you want (eg cookies)
}
// in your specific test
controller = new YourController {
ControllerContext = new ControllerContext { HttpContext = new MockHttpContext() }
};
関連する問題
- 1. あなたはどのようにasp.net mvcでキャッシュオブジェクトを模擬しますか?
- 2. ASP.NET MVC - フォームリクエストの模擬
- 3. ユニットテストの模擬HttpPostedFile
- 4. 模擬テストとユニットテストASP.Net 1.0 Repository
- 5. asp.net MVCのUrlオブジェクトをどうやって模擬するのですか
- 6. Rhinoモック付きユニットテストのためのASP.NET MVCでのCustomer SessionHandlerオブジェクトの模擬
- 7. ユニットテストとdbの模擬
- 8. .NETコアのMVCコントローラをユニットテストするための模擬HttpContext?
- 9. ユニットテスト中に模擬HttpServletResponse
- 10. ユニットテストのためのHttpRequest.Formの模擬
- 11. どのように正しくASP.NET MVC多層アプリケーションでユニットテストを行うには?
- 12. ASP.NET MVCユニットテストでMoqを使用してテストクラス自体の機能を模擬する方法
- 13. ユニットテストのためにユーレカ・フェーン・クライアントを模擬しました
- 14. react.jsでどのようにコンテキストを模擬してテストしますか?
- 15. ユニットテストでhttpcontextがnullにならないように模擬する方法は?
- 16. ユニットテストでアンドロイドサービスを模擬することは可能ですか?
- 17. grailsコントローラのユニットテストの模擬設定
- 18. あなたはどのようにActivatedRouteを模擬しますか
- 19. ユニットテスト - リスナーを模擬する方法
- 20. どのように適切にIAuthenticationHandlerを模倣するASP.NETコアコントローラのユニットテスト中
- 21. AngularJSユニットテスト用カルマジャスミンの模擬方法
- 22. ユニットテストとオープンファンクションの模擬方法
- 23. ユニットテストのためのRethinkdbの模擬方法私のDAOのNodeJS
- 24. HttpResponseBase.End()をどうやって模擬しますか?
- 25. `instanceof`テストをどうやって模擬できますか?私のリアクトコードで
- 26. PHPUnit:このファイルシステムをどうやって模擬しますか?
- 27. ASP.NETコアで私にエラーが発生した模擬ロガー
- 28. どのように私はasp.net mvcのリンクをリダイレクトしますか?
- 29. ASP.NET MVCはどのようにJsonResultsを生成しますか?
- 30. ユニットテストのためにgrailsのデータソースを模擬する方法
私はこれが好き。これは嘲笑よりもはるかに理解しやすいです。 m_requestとm_responseが公開されている理由は何ですか? –
です。なぜなら、テストを容易にするために設計された偽のオブジェクトだからです。それらを非公開にすることは、私がそれらを変更したいのであれば(と時々あなたが)私は財産等を持たなければならないということを意味するでしょう。実装の隠蔽のようないくつかのルールは、この種の環境において積極的に有害です –
なぜ私はその質問に答えた後、公開します。リクエストまたはレスポンスのどちらもHttpContextBaseにあるので、セッターはありません。だから私のユニットテストから要求と応答を変更する必要がある場合、私はそれを公開する必要があります。 –