有没有人使用史蒂夫桑德森的MvcIntegrationTestFramework?

Mau*_*ice 13 testing asp.net-mvc integration-testing automated-tests

我正在研究测试ASP.NET MVC应用程序的其他方法,并遇到了Steve Sanderson的MvcIntegrationTestFramework.这种方法看起来很有希望,但我想知道是否有人有任何实际经验可以分享.

小智 7

我从中得到了一些非常好的结果.我不关心这里有什么人说测试视图的必要性,只要你将第一行代码添加到视图中,即使代码严格与表示相关,你也会引入错误的可能性.编写自动化测试是个好主意.我的主要兴趣是尽可能多地捕获白屏和黄屏异常/错误.为此,我一直在使用Steven的介绍性博客文章中的片段,以确保正确呈现页面而不会抛出任何异常:

Assert.IsTrue(result.ResponseText.Contains("<!DOCTYPE html"));
Run Code Online (Sandbox Code Playgroud)

我在这个框架中看到的小陷阱可能是:

  • 如果您的网站在视图和操作方法之间进行了一些相当复杂的模型绑定,您可能会发现自己创建了一些非常大的NameValueCollections,例如在这个示例中(一个实际上需要LogonModel视图模型对象的操作方法),因为我不知道通过使用此框架,可以看到将任何复杂视图模型对象类型传递到操作方法的任何方法:

var result = browsingSession.ProcessRequest("/account/logon", HttpVerbs.Post, new NameValueCollection { {"UserName","myName"}, {"Password", "myPassword"}, {"returnUrl", "/home/myActionMethod"} });

  • 执行browseSession.ProcessRequest("url")会创建一个应用程序主机/上下文,它实际上使用您正在测试的项目中的配置执行您正在测试的Web代码.这意味着测试运行起来有点慢,并且可能会修改实际数据,因为我没有看到通过使用内置的任何工具,使用虚假版本更换您的Web项目中的数据访问存储库的快速简便方法测试框架.换句话说,你可能需要使用一些基于web.config的方法来自己动手.