【发布时间】:2018-04-11 20:42:28
【问题描述】:
在测试给定预加载关系时不查询数据库的方法的上下文中,我想用预加载的关联构建一条记录。尝试通过关系建立具有 has_many 的记录时遇到了麻烦。这不起作用:
let(:preloaded_record) { build(:test_record,
hmtas: build_list(:has_many_through_association, N)
) }
通过将数据持久化到数据库来建立关系,然后在数据库中查询该数据以测试方法是否不会命中数据库,这似乎不是最优的。
如何在不使用 db 的情况下通过关联使用预加载的 has_many 构建记录?
期望:具有 .association(:hmtas).loaded 的实际记录或近似模拟?
可选:使用 factory_bot
涉及:How to use build method with a has_many :through association
【问题讨论】:
-
为什么它看起来不太理想?成本低,您不必创建解决方案,并且更接近生产环境。
-
我尽量避免由于性能而影响数据库
-
打分贝的性能成本是多少?
-
我没有数字。它会减慢测试速度。我不认为它与这个问题严格相关。如果它分散注意力,也许我应该缩短上下文?感谢您提供的任何帮助
-
查看 Max 的回答。如果数据库命中会大大减慢测试速度,我会感到惊讶。
标签: ruby-on-rails activerecord rspec factory-bot