gpt4 book ai didi

c# - 使用 ASP.NET 开发服务器进行单元测试 MVC

转载 作者:太空狗 更新时间:2023-10-29 21:58:58 25 4
gpt4 key购买 nike

我想确认我创建的路由正在选择我的“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' 在没有运行测试的情况下成功完成。

我注意到在 VS 输出窗口中,还有这条消息 No connection could be because the target machine actively refused it 127.0.0.1:14478。我想卡西尼一定不是活跃的。所以我选择先启动被测站点(ctrl+F5)再启动单元测试。然后它将 VS 输出更改为:

WebTestAdapter.ConnectToHostAdapter: unexpected exception occured. Microsoft.VisualStudio.TestTools.HostAdapters.AbortTestExecutionException: Error in the application. at Microsoft.VisualStudio.TestTools.HostAdapters.WebTestAdapter.ConnectToHostAdapter()

为了尝试解决这个问题,我遵循了这些文章的建议:

...但无论我做什么,我仍然会收到错误消息。有什么建议吗?

更新/澄清
这个问题不是关于测试 MVC 路由。这个问题的目的是发现如何使 ASP.NET MVC 正确初始化以允许更“深入”的自动化测试。我选择了一个针对 DefaultControllerFactory 的“路由测试”场景,仅作为示例。在此示例中,除非正确初始化 ASP.NET MVC,否则 DefaultControllerFactory 不会正常运行。

最佳答案

这是测试 MVC 应用程序时的常见要求,幸运的是,有一个框架可以简化您在测试 MVC Controller 时的生活:

工具是:

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/

关于c# - 使用 ASP.NET 开发服务器进行单元测试 MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10489683/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com