0

这个想法源于factory_girl 测试所有工厂的方法。这让我开始思考,为什么不对模型、控制器和请求做类似的事情呢?

据我所知,任何新ActiveRecord模型都应该是无效的。如果没有,那么您还没有创建相关的验证。从 TDD 方法来看,这可能不是问题,因为您首先要处理您的断言。但是,如果您要继承另一个没有适当测试的项目,那么如果您可以使用一些 [非常] 通用的断言来测试每个模型/视图/控制器,那将是非常宝贵的。

对于模型,我认为这model.new.should be_invalid是一个好的开始。

对此有什么想法吗?这是一个好/坏主意吗?

4

1 回答 1

1

我不鼓励这种广泛的测试,因为您将花费大量时间运行具有固有低价值的测试。

您的测试应该定义系统的行为/要求。断言所有模型都具有一个或多个必需值并不是对每个模型都进行的有用测试。

如果您有真正的横切关注点,您应该将该逻辑提取到一个 mixin 中,并使用它自己的测试来隔离和定义行为。然后,您可以将其混合到所有模型中,而无需测试每个模型。

大多数工程师都同意功能代码的成本应该与业务/行为价值进行权衡,但测试也应该如此。这些类型的测试本质上是低价值的,但在运行时间、维护和误报方面都有成本。

于 2013-01-28T16:39:16.583 回答