1

在我的 RSpec 文件中,我使用 FactoryGirl 创建了我在 RSpec 文件中使用的对象。在我的 RSpec 文件中,我使用了三个对象AB其中C C 依赖于 B,B 依赖于 A。在 RSpec 文件中,我编写了两个测试用例:一个用于测试index控制器的方法,另一个用于update方法。因此,我创建了用于测试这两种方法的对象,如下所示:

before(:each) do
  @A = FactoryGirl.create(:A)
  @B = FactoryGirl.create(:B)
  @C = FactoryGirl.create(:C)
end

这里我使用的是Rails的测试环境,所以我使用的是我已经拥有的相应的测试数据库。所以为了在运行后清理数据库,我编写了以下代码:

 after(:each) do
   C.all.destroy
   B.all.destroy
   A.all.destroy
 end

但问题是,在运行规范后,当我检查与它们对应的表时,我发现数据没有被删除。在这里,我在模型中使用了 DataMapper。所以可以请任何人帮助我解决这个问题,即在每次运行规范后清理这些表。谢谢你。

4

1 回答 1

0

您应该使用数据库清理器 gem,它可以帮助您在事务中运行规范,以便在每个示例之间清理您的数据库。它还可以配置为运行带有删除/截断的特定示例,因此您可以将其与外部工具(硒或其他驱动程序)一起使用

这一切都在那里解释:

https://github.com/bmabey/database_cleaner

于 2013-08-22T03:18:15.483 回答