私の単純なIndex()
ActionMethodでは、User.Identityプロパティを参照しています。だから私はそれを嘲笑する必要があると思った。私は自分のASP.NET MVCコントローラをモックすると、私のActionMethodはビューを返しません。どうして?
私はHomeController
モックをいくつか作成し、これを私の単体テストで使用します。これを行うと、ActionMethod
はビューとしてnullを返します。モックされたコントローラを具体的なインスタンスに置き換えると(もちろん、User.Identity
への参照をコメントアウトすると)、正しいビューが返されます。
例えば、
// Arrange.
var homeController = Mock<HomeController>(..);
homeController.Setup(x => x.User).Returns(new GenericPrincipal(..));
// Act.
var result = homeController.Index();
// Assert.
Assert.IsNotNull(result); // This fails here. result is NULL.
が、私はこれを行う(および任意のUser
参照をコメントアウト)する場合、それが動作...
// Arrange.
var homeController = new HomeController(..);
// Act.
var result = homeController.Index();
// Assert.
Assert.IsNotNull(result); // Tick!
これがなぜ任意のアイデア?
あなたはどのモックライブラリを使用していますか? –
また、具体的にここでテストしているものは何ですか?嘲笑ライブラリーが機能するかどうか –
私はMoqを使用しています。私はビューに戻ってくるいくつかの結果をテストしています。私はmoqライブラリ自体をテストしていません。モックコントローラにはViewEngineに必要なコンテキストやリクエストがないため、この問題があると思いますか? –