我正在寻找其他方式来测试ASP.NET MVC应用程序,并遇到史蒂夫·桑德森的
MvcIntegrationTestFramework.这种方法看起来相当有希望,但我想知道是否有任何人有实际的经验来分享.
解决方法
我有一些非常好的结果.我不在乎这里的其他任何人是否需要测试视图,一旦您将第一行代码添加到视图中,即使代码严格与表示相关,您也会引入错误的潜在可能性编写自动测试是个好主意.我的主要兴趣只是尽可能地捕捉到白屏和黄屏异常/错误.为了做到这一点,我一直在使用Steven的介绍性博文中的代码片段来确保页面正确呈现而不会引起任何异常:
Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html"));
我用这个框架看到的小陷阱可能是:
>如果您的网站在视图和操作方法之间执行了一些非常复杂的模型绑定,那么您可能会发现自己创建了一些非常大的NameValueCollections,例如在本例中(实际上使用了logonModel视图模型对象的动作方法),因为我通过使用此框架,无论如何将任何复杂的视图模型对象类型传递到您的操作方法中:
var result = browseSession.ProcessRequest(“/ account / logon”,HttpVerbs.Post,new NameValueCollection
{
{ “用户名”,“MYNAME”},
{“密码”,“我的密码”},
{“returnUrl”,“/ home / myActionMethod”}
});
>执行browseSession.ProcessRequest(“url”)创建一个应用程序主机/上下文,实际执行您正在测试的项目中使用配置进行测试的Web代码.这意味着测试运行速度有点慢,并且可能会修改实际的数据,因为我看不到快速简单的方法,通过使用内置的任何工具,在虚拟版本的Web项目中将数据访问存储库交换出来测试框架.换句话说,你可能需要使用一些基于web.config的方式来滚动自己.