我一直在使用TDD几个月,现在我想学习如何测试我的控制器(MVC).
通过测试每个功能的最小单位进行单元测试.有时,控制器不小.他们从模型中获取数据,然后传递给视图.
我应该如何单元测试控制器?我应该嘲笑控制器的依赖吗?
控制器是否考虑了集成测试?
谢谢.
我在做TDD很长时间了我正在做ASP.NET MVC多年的TDD.
我开始使用规范规则:“没有单元测试的代码行”,所以我测试了一切 – 包括控制器.控制器必须进行测试,这是MVC框架的目标之一 – 让这些东西可以测试.
对于小型应用程序,方法工作得很好.几乎所有的逻辑都放在控制器内,一切都非常好的测试.
但是,只要我继续使用MVC,我开始改变主意.我尽量保持控制器尽可能的苗条.理想上,没有什么更多的是将调用委托给一些业务对象并包装结果.其余的是过滤器.
这对我来说也很好!我现在有分开实施/测试的业务对象,所以控制器只是集成点.没有理由测试整合点,因为它是小的.
关于整合测试:我还没有遇到这样的情况,实际上我需要这样的情况.不要忘记,控制器总是依赖于由构造函数注入的抽象.只要你有这么好的假设,这些抽象是如何工作的,你就可以创建适当的单元测试.当您失败时,您只需更正单元测试.
集成测试很重要和有用,但我尽可能少地创建这些测试.