ASP.NET MVC 的单元测试丰富视图
如果我在 ASP.NET MVC 中有一个丰富的 AJAX 驱动的 GUI,我将如何使用 NUnit 这样的框架有效地对其进行单元测试?
If I have a rich AJAX-driven GUI in ASP.NET MVC, how would I unit test that effectively using a framework like NUnit?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
如果您想测试 UI 的功能,请使用浏览器自动化工具,例如 Selenium。
If you're looking to test the functionality of the UI, use browser automation tools like Selenium.
jQuery 有一个名为 QUnit 您可以使用它来测试客户端的 ajax 代码。它不会与 NUnit 集成,但它是另一种选择。
jQuery has a unit testing project called QUnit which you could use to test your ajax code from a client. It isn't going to integrate with NUnit, but it is another option.
使用 NUnit,您主要是测试控制器操作——即,给定一组参数和配置,该方法是否返回正确的结果和视图模型。如果您需要测试客户端 JavaScript,您应该查看 JavaScript 单元测试框架或 UI 测试工具,例如 Selenium 或 WatiN。
With NUnit, you would primarily be testing your controller actions -- i.e., given a set of parameters and a configuration, does the method return the correct result and view model. If you need to test your client-side javascript, you should look at either a javascript unit testing framework or a UI testing tool, such as Selenium or WatiN.
您可以使用 Selenium IDE 记录测试并生成 NUnit 测试用例来验证视图的行为和输出。
Steve Sanderson 今天早些时候还发表了关于 .NET 上的 HtmlUnit 作为“无头浏览器”。 (使用 Selenium 服务器进行测试可能会很慢,因为它需要创建 FireFox、IE 等实例);
You can use Selenium IDE to record tests and the generate NUnit testcases to verify behaviour and output of your views.
Steve Sanderson also blogged earlier on today about HtmlUnit on .NET as 'headless browser'. (Testing using the Selenium server can be slow, because it requires creating an instance of FireFox, IE etc);
您必须对 ajax 调用进行单元测试,而不是对 UI 本身进行单元测试。例如,如果您通过 ajax 调用获取一些 json 数据,这将转换为可以进行单元测试的控制器方法。
我想对数据到达浏览器后发生的事情进行单元测试,那么它是一个完全不同的游戏,与 MVC 无关。
You would have to unit test your ajax calls and not your UI per se., For example if you are getting some json data through a ajax call, this would translate to a controller method which can be unit tested.
I you want to unit test something which happens after the data reaches the browser then its a whole different ball game and not related to MVC.