[英]Unit Test MVC with ASP.NET Dev Server
我想确认我的“HomeController”类是由我创建的路由选择的。 所以我有这样的测试:
[TestMethod]
[UrlToTest("http://localhost:14478/home")]
[HostType("ASP.NET")]
[AspNetDevelopmentServerHost("$(SolutionDir)\\MvcBuildApp")]
public void MyTest()
{
System.Diagnostics.Debugger.Break();
RouteCollection routes = new RouteCollection();
MvcApplication.RegisterRoutes(routes);
MvcApplication.RegisterGlobalFilters(GlobalFilters.Filters);
//This fetches DefaultControllerFactory (for now, anyway...)
var factory = ControllerBuilder.Current.GetControllerFactory();
//mock a context...
var httpContext = CreateHttpContext("http://localhost:14478/home", "GET");
RouteData route = routes.GetRouteData(httpContext);
var ctrlInstance = factory.CreateController(new RequestContext(httpContext, route), (string)route.Values["controller"]);
//ASSERT the instance is of type "HomeController"
//...
}
它失败了,说'http://localhost:14478/home' completed successfully without running the test.
我注意到在VS输出窗口中,还有此消息No connection could be made because the target machine actively refused it 127.0.0.1:14478
。 我认为卡西尼一定不能活跃。 所以我选择在启动单元测试之前启动正在测试的站点(ctrl + F5)。 然后它将VS输出更改为:
WebTestAdapter.ConnectToHostAdapter:发生意外异常。 Microsoft.VisualStudio.TestTools.HostAdapters.AbortTestExecutionException:应用程序中的错误。 在Microsoft.VisualStudio.TestTools.HostAdapters.WebTestAdapter.ConnectToHostAdapter()
为了解决这个问题,我遵循了这些文章的建议:
......但无论我做什么,我仍然会得到错误。 建议?
UPDATE /澄清
这个问题不是关于测试MVC路由。 此问题的目的是发现如何正确初始化ASP.NET MVC以允许更“深入”的自动化测试。 我仅针对DefaultControllerFactory选择了“路由测试”场景,仅作为示例。 在此示例中,除非正确初始化ASP.NET MVC,否则DefaultControllerFactory的行为不正常。
这是测试MVC应用程序时的常见要求,幸运的是,有一个框架可以简化测试MVC控制器时的生活:
工具是:
http://mvccontrib.codeplex.com/
作为示例,您可以使用一行创建测试:
"~/".ShouldMapTo<HomeController>(controller => controller.Index());
作为参考:
http://geekswithblogs.net/thomasweller/archive/2009/11/02/unit-testing-asp.net-mvc-routes.aspx
http://www.arrangeactassert.com/how-to-unit-test-asp-net-mvc-controllers/
您可能有兴趣查看Steve Sandersons MVC测试框架。 如果您下载源代码,您将有一个很好的示例来说明如何初始化MVC框架:
http://blog.codeville.net/2009/06/11/integration-testing-your-aspnet-mvc-application/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.