我正在使用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,我将非常感激。提前谢谢。
答案 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