1

Я пишу тест с использованием RSpec и FactoryGirl. В моих моделях использовались DataMappers. Вот в RSpec Я тестирование обновления два метода и указательные функции моего контроллера, где я использую два объект A, B и C. Я создал их с помощью FactoryGirl следующим образом:Использование DataBase Cleaner gem с DataMapper

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

Теперь я хочу, чтобы очистить их после каждого теста с помощью DataBase Cleaner Gem. Я искал его в Google, но в большинстве статей рассказывается о том, как использовать DataBase clean Gem с ActiveRecord, но ни один из них не знает, как использовать DataBaseCleaner gem с DataMapper. Поэтому, если кто-нибудь даст мне небольшой пример файла RSpec с очистителем DataBase, в котором используется DataMapper, я буду очень благодарен. Заранее спасибо.

+0

Но что происходит, когда вы реализуете его в обычном порядке, как показано в примерах? Теоретически он должен поддерживать транзакции и стратегии усечения с помощью DataMapper. – Kristiina

ответ

2

Сначала убедитесь, что у вас есть Dm-транзакции в вашем Gemfile, а также database_cleaner и требуют, как в вашей спецификации помощника:

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