c# - 您可以在不需要集成测试的情况下自行测试 razor View 吗?

标签 c# unit-testing asp.net-mvc-4 razor integration-testing

我有一个 MVC 网站,用户必须执行许多不同的步骤才能完成它。有验证检查和定时部分(用于法律要求)。每次我需要测试页面的小改动时都必须进行集成测试,这真是令人头疼。理想情况下,我想知道是否有一种方法(也许是插件?)允许我右键单击一个 View ,以某种方式指定一个假模型对象并直接打开它?

我最终想要测试的是任何新的客户端脚本(结合了 razor/javascript/jQuery)在各种浏览器上的外观和工作方式。这与测试我的 Controller 的功能无关。

最佳答案

设计时数据

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

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

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

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

curl

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

我使用 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

RunAll.bat:

call Logon.bat > logon_result.txt

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

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

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

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

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

关于c# - 您可以在不需要集成测试的情况下自行测试 razor View 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790075/

相关文章:

c++ - 为 gmock 自动生成模拟类

c# - 如何使用 Linq 订购集合属性?

asp.net-mvc-4 - 将模型从 View 传递到 Controller

c# - 所有的 Web 请求都是并行执行和异步处理的吗?

javascript - 预期库 TypeError : expect(. ..).to Include 不是函数

c# - System.IO.FileNotFoundException : On InitializeComponent caused by own control

python - 使用 patch decorator 和 side_effect 模拟文件读取

c# - 在 MVC 4 应用程序中使用 Unity 和 Entity Framework 的最佳实践是什么

c# - 为了避免 SQL Server 中的 SQL 注入(inject)攻击,应从字符串中转义哪些字符?

c# - 获取/删除文件的最后一个字符而不加载到内存中