c#-ASP.NET MVC 3 ViewResult子类的单元测试依赖项
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c#-ASP.NET MVC 3 ViewResult子类的单元测试依赖项,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2272字,纯文字阅读大概需要4分钟。
内容图文
![c#-ASP.NET MVC 3 ViewResult子类的单元测试依赖项](/upload/InfoBanner/zyjiaocheng/674/3020f3d3ca164bff8194ee545b3e30f3.jpg)
我正在创建一个名为JavaScriptViewResult的非常简单的ViewResult子类,该子类在执行时调用基本实现,然后将响应的Content-Type设置为text / javascript.在尝试对该类进行单元测试时,我遇到了许多困难,难以满足ASP.NET MVC堆栈的所有依赖关系.
到目前为止,这是我使用Rhino的单元测试的外观:
[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,该JavaScript将为响应设置适当的Content-Type?
解决方法:
我弄清楚了如何满足ViewResult的最低要求.我遇到的一个问题是嘲笑寻找视图的过程.通过确保填充对象的View属性,可以避免这种情况.这是我的工作测试:
[TestMethod]
public void TestExecuteAction()
{
var response = MockRepository.GenerateStub<HttpResponseBase>();
response.Output = new StringWriter();
var httpContext = MockRepository.GenerateMock<HttpContextBase>();
httpContext.Expect(m => m.Response).Return(response);
var routeData = new RouteData();
routeData.Values.Add("action", "FakeAction");
var context = new ControllerContext(httpContext, routeData, MockRepository.GenerateMock<ControllerBase>());
var viewResult = new JavaScriptViewResult();
viewResult.View = MockRepository.GenerateMock<IView>();
viewResult.ExecuteResult(context);
Assert.AreEqual("text/javascript", context.HttpContext.Response.ContentType);
}
内容总结
以上是互联网集市为您收集整理的c#-ASP.NET MVC 3 ViewResult子类的单元测试依赖项全部内容,希望文章能够帮你解决c#-ASP.NET MVC 3 ViewResult子类的单元测试依赖项所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。