Использование Gem DataBase Cleaner с DataMapper
Я пишу тест с использованием 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, но в большинстве статей рассказывается о том, как использовать Gem DataBase Cleaner с ActiveRecord, но ни в одной из них четко не указано, как использовать гем DataBaseCleaner с DataMapper. Поэтому, если кто-нибудь даст мне небольшой пример файла RSpec с очистителем DataBase, где использовался DataMapper, я буду очень благодарен. Заранее спасибо.
1 ответ
Сначала убедитесь, что у вас есть 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
Подробнее о readme DatabaseCleaner: https://github.com/bmabey/database_cleaner