在DataMapper中使用DataBase Cleaner gem

时间:2013-08-22 05:13:43

标签: ruby-on-rails factory-bot rspec-rails ruby-datamapper database-cleaner

我正在使用RSpec和FactoryGirl编写测试。在我的模型中使用了DataMappers。这里在RSpec我测试我的控制器的两个方法更新和索引功能,我使用两个对象A,B和C.我使用FactoryGirl创建它们如下:

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

现在我想用DataBase Cleaner Gem在每次测试后清理它们。我在Google上搜索过它,但大多数文章都讨论了如何使用DataBase清理Gem和ActiveRecord,但没有一个明确指出如何将DataBaseCleaner gem与DataMapper一起使用。因此,如果有人给我使用DataBase清理器的RSpec文件的小例子,其中使用了DataMapper,我将非常感激。提前谢谢。

1 个答案:

答案 0 :(得分:2)

首先确保您的Gemfile和database_cleaner中都有dm-transactions,并且在规范帮助器中都需要这两个:

require 'dm-transactions'
require 'database_cleaner'

然后你只需配置DatabaseCleaner就可以在规范助手中使用DataMapper和以下行:

DatabaseCleaner[:data_mapper].strategy = :transaction

现在,您可以在规范中使用与此类似的内容,让DatabaseCleaner知道事务何时开始以及何时清理:

before :each do
  DatabaseCleaner.start
end

after :each do
  DatabaseCleaner.clean
end

有关DatabaseCleaner自述文件的更多详细信息:https://github.com/bmabey/database_cleaner