我正在寻找其他方法来测试 ASP.NET MVC 应用程序并遇到了 Steve Sanderson 的MvcIntegrationTestFramework。这种方法看起来很有希望,但我想知道是否有人有任何实际经验可以分享。
4 回答
我从中得到了一些非常好的结果。我不在乎这里的其他人怎么说测试视图的必要性,只要将第一行代码添加到视图中,即使代码是严格与演示相关的,也会引入潜在的错误编写自动化测试是个好主意。我的主要兴趣只是尽可能多地捕获白屏和黄屏异常/错误。为此,我一直在使用 Steven 的介绍性博客文章中的片段来确保页面正确呈现而不会引发任何异常:
Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html"));
我在这个框架中看到的小缺陷可能是:
- 如果您的网站正在视图和操作方法之间进行一些非常复杂的模型绑定,您可能会发现自己创建了一些非常大的 NameValueCollections,例如在这个示例中(实际上采用 LogonModel 视图模型对象的操作方法),因为我没有看不到通过使用此框架将任何复杂的视图模型对象类型传递到您的操作方法中的任何方式:
var result = browsingSession.ProcessRequest("/account/logon", HttpVerbs.Post, new NameValueCollection
{
{"UserName","myName"},
{"Password", "myPassword"},
{"returnUrl", "/home/myActionMethod"}
});
- 执行 browserSession.ProcessRequest("url") 创建一个应用程序主机/上下文,它使用您正在测试的项目中的配置实际执行您正在测试的 Web 代码。这意味着测试运行速度有点慢,并且可能会修改真实数据,因为我没有看到一种快速简便的方法可以使用内置的任何工具将您正在测试的 Web 项目中的数据访问存储库替换为假版本测试框架。换句话说,您可能需要使用一些基于 web.config 的方法自行开发。
不久前阅读了 ardave 的答案后,我们实际上去为我们新的基于Orchard的应用程序 Marinas.info 亲自尝试一下。
首先,我建议任何人从这个版本的分支开始,因为它比原版更容易设置。
对于任何“正常”的 MVC3 应用程序,它都可以正常工作。不幸的是,它与 Orchard 一起表现不佳,至少在其 Global.asax.cs 的未修改版本中表现不佳。所以我们仍然走在基于浏览器的测试道路上,但我们继续使用它在应用程序中执行 Orchard 命令,这已经足够快了。
我没有使用过这个框架。但根据我阅读他的书Pro ASP.NET MVC Framework和他开发的另一个验证框架xVal的经验,我会说“他很棒”。
对其进行了一些试验,在某些情况下它可能非常有用。一般竖起大拇指,如果我看到进一步的工作,我会在未来的项目中使用。
没有继续进行,因为已经设置了WatIn并处理了一些我不想在这个框架中再次处理的事情。例如,通过对话进行身份验证,这可能需要更改代码。