1

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

4

2 回答 2

1

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

于 2012-08-28T13:28:35.023 回答
1

通常,为测试提供一些全局数据是一个坏主意,并且可能会在测试中引入依赖关系(这总是一个坏主意)。为了避免这种情况,每个测试都应该生成它自己需要的数据,而不是依赖于一些全局插入的数据。

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

在 Rails 中,您可以使用Rails 自己的固定装置来播种所需的数据,或者使用像FactoryGirl这样的第三方 gem 。

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

于 2012-08-30T15:54:43.873 回答