在我簡單的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需要? –