我正在使用Watir和RSpec为Rails应用程序编写集成测试。在跨越每个测试的数据库中设置数据的最佳方法是什么?例如,我想要在一组测试中使用相同的用户。如何在所有测试运行之前播放该公共数据(例如用户),然后将其清理以用于下一组测试?
答案 0 :(得分:1)
我相信杰夫在Cucumber & Cheese书的“使用数据库”章节中谈到了这一点。
答案 1 :(得分:1)
通常有一些测试的全局数据是一个坏主意,可能会在测试中引入依赖关系(这总是一个坏主意)。为避免这种情况,每个测试都应生成自身所需的数据,而不是依赖于某些全局插入的数据。
如果您正在使用RSpec,那么它会为您完成一些工作(它甚至以随机顺序运行您的测试以避免依赖性) - 它在运行测试之前创建数据库保存点并回滚所有测试完成的更改。理想情况下,这意味着测试数据库在测试运行之前是空的,并且在测试运行后它将为空。
在Rails中,您可以使用Rails own fixtures播种所需数据或使用某些第三方gem FactoryGirl。
同样,不要创建任何全局数据,这些数据将被所有测试使用,因为它迟早会回来困扰你。