如何为Rails应用程序的Watir集成测试提供测试数据?

时间:2012-08-28 03:33:20

标签: ruby-on-rails rspec watir

我正在使用Watir和RSpec为Rails应用程序编写集成测试。在跨越每个测试的数据库中设置数据的最佳方法是什么?例如,我想要在一组测试中使用相同的用户。如何在所有测试运行之前播放该公共数据(例如用户),然后将其清理以用于下一组测试?

2 个答案:

答案 0 :(得分:1)

我相信杰夫在Cucumber & Cheese书的“使用数据库”章节中谈到了这一点。

答案 1 :(得分:1)

通常有一些测试的全局数据是一个坏主意,可能会在测试中引入依赖关系(这总是一个坏主意)。为避免这种情况,每个测试都应生成自身所需的数据,而不是依赖于某些全局插入的数据。

如果您正在使用RSpec,那么它会为您完成一些工作(它甚至以随机顺序运行您的测试以避免依赖性) - 它在运行测试之前创建数据库保存点并回滚所有测试完成的更改。理想情况下,这意味着测试数据库在测试运行之前是空的,并且在测试运行后它将为空。

在Rails中,您可以使用Rails own fixtures播种所需数据或使用某些第三方gem FactoryGirl

同样,不要创建任何全局数据,这些数据将被所有测试使用,因为它迟早会回来困扰你。