我有一个Active Record查询,如下所示:
user.templates.where(id: @template_id).joins(:another_record).pluck('templates.id').uniq
但我只想测试where
是否使用正确的ID进行调用。有没有办法做到这一点,而不必创建几个只响应其余方法的双打。
基本上我想要像
这样的东西expect_any_instance_of(User).to receive_message_chain('templates.where').with(id: target_id).and_return(a_double_that_returns_another_double_that_responds_to_anything)
答案 0 :(得分:0)
a_double_that_returns_another_double_that_responds_to_anything = double.as_null_object
expect_any_instance_of(User).to receive_message_chain('templates.where').with(id: target_id).and_return(a_double_that_returns_another_double_that_responds_to_anything)
作为旁注,我认为这项测试没有任何好处。做一个连接到真实数据库的集成测试并检查你的查询是否真的有效并且不只是调用一些AR方法会好得多。
如果您可以向我展示一下您正在测试的内容,我可以给出更周到的建议。