单元测试ASP.Net MVC 4应用程序

Ben*_*esh 60 tdd unit-testing visual-studio-2010 visual-studio asp.net-mvc-4

我意识到这是大约20个不同帖子的重复,但它们都不是MVC4特有的,我见过的所有帖子都没有回答我的所有问题.到目前为止,我第一次涉足TDD世界至少可以说令人沮丧.我尝试做的大部分内容似乎与MVC 4不兼容,或者如果没有使用记录不完整的第三方库,我还不太了解.

我希望能够做的是编写一个测试来测试我的控制器动作,他们传递的模型和查看动作正在发送模型.我想测试视图是否存在,我想测试传递的模型是否是视图的正确类型,我想要一些方法来测试它是否会正常处理.我也希望能够测试我的路线.并测试验证过滤器?

我想要一种方法来对ASP.Net MVC进行单元测试,这将使机会很少.

测试Action的Model输出似乎很容易,但测试视图几乎是不可能的.

所以这是我的问题列表:

  1. 一旦我测试了动作并获得了动作结果,我该如何测试以查看它想要的视图是否存在?
  2. 我如何测试我的路线?
  3. 我如何测试以确保正确处理我的观点?
  4. 什么是ASP.Net MVC 4的THOROUGH单元测试真正的"最佳实践"?
  5. 如何进行单元测试表单身份验证?
  6. 如何对动作过滤器进行单元测试?

我更喜欢使用内置的Visual Studio测试项目,但如果我必须使用NUnit,我必须这样做.我只需要确保它正确完成.

提前感谢您的回复.

编辑:我也无法让NUnit使用我的MVC4应用程序,因为有些软件与.NET版本不兼容,其中一个程序集已被编译.

Rob*_*odi 59

  1. 确保存在视图
  2. http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx/
  3. http://blog.davidebbo.com/2011/06/unit-test-your-mvc-views-using-razor.html
  4. 见下文
  5. 如何对使用FormsAuthentication的ASP.NET MVC控制器进行单元测试?
  6. 如何测试ASP.NET MVC中的动作过滤器?

没有.4:这是一个难题.如何彻底测试任何东西?就个人而言,除了3个主流浏览器和我的两只眼睛之外,我并没有真正测试这些视图,因为很难在没有实际使用它的情况下测试网站及其所有组件.你有JavaScript解雇,CSS样式化,它在不同的浏览器中看起来不同.所以,对我而言,似乎测试视图完全是您网站整体可用性的一小部分.如果您正在开发一个基于表的简单财务数据报告,请对该数据进行测试.如果您的视图是一个花哨的Ajax站点的基础,也许不要像体验那样测试HTML.我知道这不是一个简单,干脆的答案,但可接受的覆盖水平总是涉及权衡.

  • 注意:#2上的链接不起作用.工作链接在这里:http://haacked.com/archive/2007/12/17/testing-routes-in-asp.net-mvc.aspx/ (2认同)