【发布时间】:2019-02-02 09:07:12
【问题描述】:
我最近每周为我的一个客户使用 Rspec 进行大约 10 小时的 Rails TDD。我发现我需要编写的很多测试都需要在数据库中有记录,但是根据我所学到的,测试引用数据库并不是一个好习惯。如何在我的测试中创建/保存记录,以便测试可以成功运行,或者是否有更好的方法来解决这个问题?
【问题讨论】:
-
你看过FactoryBot工厂了吗?
-
大多数情况下,您可以使用模拟来伪造真实对象,其他时候您实际上不需要保存记录,但新的未持久对象也可以。有时必须使用数据库,这取决于您要测试的内容。我不认为有一个通用的解决方案,您至少应该提供一些您希望帮助获得更好建议的测试示例。
-
这个想法是,在创建(或持久化)一个对象之前,您应该问自己是否真的需要将该对象存储在数据库中......或者实例化该对象是否足够.即使您使用的是类似 FactoryBot (i.e. there are times when you should use build_stubbed instead of create.
标签: ruby-on-rails unit-testing rspec tdd bdd