3
我创建了一个非常简单的ViewResult
子类,称为JavaScriptViewResult
,它在执行时调用基本实现,然后将响应的Content-Type
设置为text/javascript
。在试图对这个类进行单元测试时,我遇到了许多实现ASP.NET MVC堆栈的所有依赖关系的困难。ASP.NET MVC 3 ViewResult子类的单元测试依赖关系
这里是我的单元测试,使用犀牛,看起来像至今:
[TestMethod]
public void TestExecuteAction()
{
var request = MockRepository.GenerateMock<HttpRequestBase>();
request.Expect(m => m.Url).Return(new Uri("/Test/JavaScript", UriKind.Relative));
var httpContext = MockRepository.GenerateMock<HttpContextBase>();
httpContext.Expect(m => m.Request).Return(request);
var controller = MockRepository.GenerateMock<ControllerBase>();
var virtualPathProvider = MockRepository.GenerateMock<VirtualPathProvider>();
var routeCollection = new RouteCollection(virtualPathProvider);
routeCollection.MapRoute("FakeRoute", "Test/JavaScript", new { controller = "Test", action = "JavaScript" });
var routeData = routeCollection.GetRouteData(httpContext);
var context = new ControllerContext(httpContext, routeData, controller);
var viewResult = new JavaScriptViewResult();
viewResult.ExecuteResult(context);
Assert.AreEqual("text/javascript", context.HttpContext.Response.ContentType);
}
运行测试时,最新的例外是System.Web.Routing.Route.GetRouteData(HttpContextBase httpContext)
肠子里的一个NullReferenceException
。
如何设置执行ViewResult
的所有依赖关系?有没有什么技术可以使这个更简单?或者,我可以通过不同的方式利用MVC视图引擎生成JavaScript,以便为响应设置适当的Content-Type
?
+1嘲笑IView。这是我错过的唯一步骤。 – 2012-07-08 12:42:38