ユニットテストを書いていますが、HttpContext/ControllerContextがnullであるためコントローラメソッドが例外をスローしています。私はHttpContextから何かをアサートする必要はありません。ちょうどそれがNULLでないことが必要です。私は研究を行っており、私はMoqが答えだと信じています。しかし、私が見たすべてのサンプルは私を多く助けなかった。 httpcontextを嘲笑するだけで何もする必要はありません。私に正しい方向を向ける!ユニットテストでhttpcontextがnullにならないように模擬する方法は?
5
A
答えて
6
これらの2つの機能は、クラス内でhereから取得されます。
public static class HttpContextFactory
{
public static void SetFakeAuthenticatedControllerContext(this Controller controller)
{
var httpContext = FakeAuthenticatedHttpContext();
ControllerContext context =
new ControllerContext(
new RequestContext(httpContext,
new RouteData()), controller);
controller.ControllerContext = context;
}
private static HttpContextBase FakeAuthenticatedHttpContext()
{
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
var response = new Mock<HttpResponseBase>();
var session = new Mock<HttpSessionStateBase>();
var server = new Mock<HttpServerUtilityBase>();
var user = new Mock<IPrincipal>();
var identity = new Mock<IIdentity>();
context.Setup(ctx => ctx.Request).Returns(request.Object);
context.Setup(ctx => ctx.Response).Returns(response.Object);
context.Setup(ctx => ctx.Session).Returns(session.Object);
context.Setup(ctx => ctx.Server).Returns(server.Object);
context.Setup(ctx => ctx.User).Returns(user.Object);
user.Setup(ctx => ctx.Identity).Returns(identity.Object);
identity.Setup(id => id.IsAuthenticated).Returns(true);
identity.Setup(id => id.Name).Returns("a.ali174");
return context.Object;
}
}
ユニットテストから、私はそのように呼ばれました。
HttpContextFactory.SetFakeAuthenticatedControllerContext(controller);
あなたのテストプロジェクトにMoqをインストールしていることを確認してください:
Install-Package Moq
0
私はこれが古い主題である知っている、しかし、ユニットテストのためのMVCアプリケーションをモックすることは、我々は非常に定期的に行うものです。
Visual Studio 2013にアップグレードした後、Moq 4を使用してMVC 3アプリケーションをMockingしました。単体テストはデバッグモードで動作していませんでした。HttpContextは試行したときに「式を評価できませんでした」変数を調べる。
Visual Studio 2013には、いくつかのオブジェクトを評価する際の問題があります。デバッグ用の模擬Webアプリケーションを再び動作させるには、Tools => Options => Debugging => General settingsの "Use Managed Compatibility Mode"をチェックしなければなりませんでした。
関連する問題
- 1. HttpApplication/HttpContextを模擬する方法
- 2. .NETコアのMVCコントローラをユニットテストするための模擬HttpContext?
- 3. ユニットテスト - リスナーを模擬する方法
- 4. C#でこのようなクラスを模擬する方法は?
- 5. ユニットテスト中に模擬HttpServletResponse
- 6. MVC 4 Mocking HttpContext - 模擬する方法DisplayModeProvider
- 7. AngularJSユニットテスト用カルマジャスミンの模擬方法
- 8. ユニットテストとオープンファンクションの模擬方法
- 9. NativeScript - ユニットテスト時に模擬ライブラリをインポートできない
- 10. ユニットテストの模擬HttpPostedFile
- 11. ユニットテストでDateTime.Nowを模擬する方法は?
- 12. ユニットテストでAngularFire 2サービスを模擬する方法は?
- 13. ユニットテストのためにgrailsのデータソースを模擬する方法
- 14. 値がnullの模擬データで列を記入する方法
- 15. NodeJSユニットテストのrequest-promise-nativeを模擬する方法は?
- 16. ユニットテストとdbの模擬
- 17. asp.net MVCでのユニットテスト、どのように私はページリクエストを模擬しますか?
- 18. SignalR Clientsを模擬する方法。ユニットテストのグループ
- 19. Javaクラスでフィールドがnullにならないようにする方法
- 20. JS:jestJSユニットテストでネストされた関数を模擬する方法は?
- 21. ユニットテストでアンドロイドサービスを模擬することは可能ですか?
- 22. HttpContextがNULLです
- 23. ユニットテストのためのRethinkdbの模擬方法私のDAOのNodeJS
- 24. CrudRepositoryを正しい方法で模擬する方法は?
- 25. Web API ASP.Netコアでユニットテスト例外フィルタを設定する方法。 onceptionメソッドを模擬したくない
- 26. 'out'パラメータを模擬する方法は?
- 27. AspectJクラスを模擬する方法は?
- 28. Nettyを模擬する方法は?
- 29. 辞書を模擬する方法は?
- 30. BDDで模擬する方法
この投稿はあなたに役立つと思います。 http://stackoverflow.com/questions/542132/mocking-a-httpcontext-response-output-with-moq –
この投稿は多くの役に立ちました。http://www.emadibrahim.com/2008/04/04/unit-test-linq-to-sql-in-aspnet-mvc-with-moq/ with with HttpContextFactory Classをwith 2つの方法。 1つはHTTPコンテキストを嘲笑し、もう1つは現在のコントローラコンテキストを擬似データに設定します。 – TheFlyingCircus
あなたの質問に対する答えとして、あなたのソリューションの概要を示すサンプルコードをここに置いてください。できればそれを受け入れるようにしてください。 –