这个想法源于factory_girl
test all factories方法。它让我思考,为什么不为模型,控制器和请求做类似的事情呢?
据我所知,任何新的ActiveRecord
模型应该无效。如果没有,那么您还没有创建相关的验证。从TDD方法来看,这可能不是问题,因为您首先处理的是断言。但是如果你继承了另一个没有正确测试的项目,如果你能用一些[非常]一般的断言来测试每个模型/视图/控制器,这将是无价的。
对于模型,我认为model.new.should be_invalid
是一个好的开始。
对此有何想法?这是好主意还是坏主意?
答案 0 :(得分:1)
我不赞成这种广泛的测试,因为你将花费大量时间来运行具有固有低价值的测试。
您的测试应该定义系统的行为/要求。断言所有模型都有一个或多个必需值,在每个模型上运行时都不是一个有用的测试。
如果您有真正的跨领域问题,那么您应该将该逻辑提取到一个mixin中,并使用它自己的测试来隔离和定义行为。然后,您可以将其混合到所有模型中,而无需测试每个模型。
大多数工程师都认为应该根据业务/行为价值来衡量功能代码的成本,但也应该进行测试。这些类型的测试具有固有的低价值,但在运行时,维护和误报方面都有成本。