我使用這個輔助方法,把我的PartialViewResult成字符串並返回它作爲JSON - http://www.atlanticbt.com/blog/asp-net-mvc-using-ajax-json-and-partialviews/ASP.NET MVC - 單元測試與Moq框架RenderPartialViewToString()?
我的問題是,我使用起訂量來模擬控制器,每當我運行單元測試使用這個RenderPartialViewToString ()方法,我得到了「對象引用未設置爲對象的實例」。 ControllerContext上的錯誤。
private ProgramsController GetController()
{
var mockHttpContext = new Mock<ControllerContext>();
mockHttpContext.SetupGet(p => p.HttpContext.User.Identity.Name).Returns("test");
mockHttpContext.SetupGet(p => p.HttpContext.Request.IsAuthenticated).Returns(true);
// Mock Repositories
var mockOrganizationRepository = new MockOrganizationRepository(MockData.MockOrganizationsData());
var mockIRenderPartial = new BaseController();
var controller = new ProgramsController(mockOrganizationRepository, mockIRenderPartial);
controller.ControllerContext = mockHttpContext.Object;
return controller;
}
這將返回一個代理控制器,也許這就是我得到這個錯誤的原因。任何想法如何進行單元測試?
非常感謝。
其中*究竟*請問'NullReferenceException'發生? – bzlm 2010-09-02 06:52:14
它發生在ControllerContext上,我認爲是因爲Moq嘲笑控制器並且只返回代理...這是行: ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext,viewName); 當我將鼠標懸停在其上時,ControllerContext.Controller爲空。 謝謝, – Saxman 2010-09-02 15:55:19
在RouteData中設置「controller」和「action」參數後,我也收到了這個異常。全堆棧跟蹤:http://pastebin.com/S8c26JLD – EMP 2011-07-19 11:28:03