Rails测试模拟对象与使用工厂对象的最佳实践是什么。当模型可能转到外部源时,是否应该使用模拟 ?或者,当您测试实际模型并使用模拟处理其他所有内容时,您是否只使用工厂?
例如,如果我们在测试客户模型时有客户和订单的销售系统,我们是否会模拟订单或者我们只是使用工厂订单?它甚至有所作为吗?
答案 0 :(得分:3)
我们经常在我们的网上商店进行这场辩论,并没有得出明确的答案。工厂的好处是可以测试与数据库的交互,我们发现了一些问题,这些问题可能会被mocks&存根。另一方面,这样的问题很少见,并且模拟/存根运行得更快,这鼓励了更多的测试。
所以我们已经发展到使用嘲笑&单元测试中的存根而不是工厂,结合放弃两者的集成测试,因此测试与模拟的数据库的功能交互。短线单元测试没有。这似乎为我们取得了适当的平衡。