4

Rails 测试模拟对象与使用工厂对象的最佳实践是什么。是否应该在模型可能转到外部源时才使用模拟?还是仅在测试实际模型并在其他所有内容中使用模拟时才使用工厂。

例如,如果我们有一个包含客户和订单的销售系统,当我们测试客户模型时,我们是模拟订单还是只使用工厂订单?它甚至有什么不同吗?

4

1 回答 1

4

我们经常在我们的网上商店进行这种辩论,但还没有得出明确的答案。工厂具有测试与数据库交互的好处,我们发现了一些在模拟和存根中可能会遗漏的问题。另一方面,此类问题很少见,并且模拟/存根运行得相当快,这鼓励了更多的测试。

因此,我们已经朝着在单元测试中使用模拟和存根而不是工厂的方向发展,结合放弃两者的集成测试,因此测试与模拟和存根单元测试没有的数据库的功能交互。这似乎为我们取得了正确的平衡。

于 2012-05-06T15:50:46.857 回答