您是否可以自行测试剃刀视图而无需进行集成测试?

Ben*_*enM 15 c# integration-testing unit-testing razor asp.net-mvc-4

我有一个MVC网站,其中包含许多不同的步骤,用户必须通过它来完成它.有验证检查和定时部分(法律要求).每次我需要测试对页面的小改动时,必须进行集成测试才是真正令人头痛的问题.理想情况下,我想知道是否有一种方法(可能是一个插件?),这将允许我右键单击一个视图,以某种方式指定一个假的模型对象并直接打开它?

我最终要测试的是任何新的客户端脚本(它结合了razor/javascript/jQuery)在各种浏览器上的外观和工作方式.这不是关于测试我的控制器的功能.

wes*_*ton 4

设计时数据

设计时数据在WPF中很常用,这里有一篇文章描述了一种在MVC中显示设计时数据的技术:

http://blog.dezfowler.com/2010/11/adding-design-mode-to-your-mvc-app.html

这应该为您提供一种“以某种方式指定假模型对象并直接打开它”的方法。

这可能就是您所追求的,或者:

卷曲

可与上述实时或设计时数据一起使用。

我使用从批处理文件执行的cURL并将内容输出到多个文件。

例如,此批处理可能会模​​拟登录:

登录.bat:

echo Index without logon
curl http://localhost/index.html
echo Logon
curl http://localhost/login.html --data "username=a&password=p" ---dump-header auth.txt
echo Index after logon
curl http://localhost/index.html --cookie auth.txt
Run Code Online (Sandbox Code Playgroud)

运行全部.bat:

call Logon.bat > logon_result.txt
Run Code Online (Sandbox Code Playgroud)

第一次运行它时,我还在浏览器中手动检查页面,然后我知道我可以提交这些批处理结果文件(例如logon_result.txt)作为预期输出。

随后我运行批处理文件时,任何更改都会在修订控制中突出显示。此时,我会检查差异并确定它们,然后提交为新的预期输出。或者我修复一个错误。

我通常将其用于 WebAPI 集成测试,但它应该适用于任何 http 服务的页面。需要记住的一种特定情况是,例如,对于共享布局的彻底更改,您可能不想手动检查所有这些更改。因此,请确保在布局更改之前检查并提交所有内容,这样小错误就不会隐藏在大量更改中。

我用这种技术发现了一些坏错误。你曾经把 an 放在System.Web.Mvc.AuthorizeAttributea 上ApiController而不是 an 上吗System.Web.Http.AuthorizeAttribute?不会阻止未经授权的用户,但代码看起来不错。

您可能还需要设置一个新的干净数据库或恢复一个快照作为文件的第一个任务RunAll.bat,以便页面上显示的任何数据每次运行都是相同的,并且不会显示为更改。