1

我正在寫一個測試使用RSpec和FactoryGirl。在我的模型中使用了DataMapper。在這裏,在我的RSpec正在測試兩種方法更新和我的控制器,我現在用的兩個對象A,B和C.我已經創造了他們通過使用FactoryGirl如下的指數函數:使用DataMap清潔gem與DataMapper

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

現在,我要清理他們每次使用DataBase Cleaner Gem進行測試後。我在谷歌搜索它,但大多數文章談論如何使用ActiveRecord DataBase清潔Gem但他們都沒有明確指定如何使用DataMap數據清理Gem與DataMapper。所以如果有人給我一個RSpec文件的小例子,其中使用DataMapper的DataBase清理器,我將非常感激。提前致謝。

+0

但是,當你在常規的方式實現它如圖所示的例子會發生什麼?理論上它應該支持DataMapper的事務和截斷策略。 – Kristiina

回答

2

首先確保你在你的Gemfile DM-交易以及database_cleaner並要求雙方在規格幫手:

require 'dm-transactions' 
require 'database_cleaner' 

然後你只需要DatabaseCleaner配置爲使用DataMapper的,在下面的行你規格幫手:

DatabaseCleaner[:data_mapper].strategy = :transaction 

現在,您可以使用類似這樣的東西在你的規格,讓DatabaseCleaner知道什麼時候開始交易,當清潔:

在DatabaseCleaner自述個
before :each do 
    DatabaseCleaner.start 
end 

after :each do 
    DatabaseCleaner.clean 
end 

更多細節:https://github.com/bmabey/database_cleaner