Использование 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

Другие вопросы по тегам