在我简单的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需要? –