我已经开始使用Rspec为一个非常古老的项目编写测试。我正在测试的模型都是ActiveRecords(后端是Oracle)。 我读过一些博客说我们应该使用模拟和存根/固定装置/工厂女孩来解雇实际的sql。 我很迷惑。我将不得不存储很多方法并创建大量对象。这是一个好习惯吗?
答案 0 :(得分:7)
在测试模型时,最好让测试与数据库集成。也就是说,不要试图模仿ActiveRecord的东西,只使用模型对象。 FactoryGirl和Fabrication都是构建真实模型对象的便捷捷径,在测试ActiveRecord模型时它们是最佳实践。
由于这是遗留代码,我建议不要在旧代码中进行过多的嘲弄或抄写,因为隔离只适用于每个组件都是单独测试的。
但是,使用TDD编写代码时,模拟和存根有很多好处:
答案 1 :(得分:1)
通常您会使用存根,然后您可以在不加载AR的情况下运行测试,并且运行速度会快得多。
我个人认为测试假数据不是测试...也许在开发环境中进行TDD ...也许......,但对于测试环境,它应该尽可能接近真实数据。
这当然是我的意见,可能不是目前的思想流派。