Я включил database_cleaner
gem в мое приложение rails. Последовал пример, приведенный в репозитории git и включил следующий код в spec_helper
:
Подход 1
config.before(:suite) do
DatabaseCleaner.strategy = :transaction
DatabaseCleaner.clean_with(:truncation)
end
config.around(:each) do |example|
DatabaseCleaner.cleaning do
example.run
end
end
Когда я запускаю rspec
, я получаю ошибку как NoMethodError:undefined method 'cleaning' for DatabaseCleaner:Module
.
Итак, я сделал некоторые исследования и обнаружил, что я мог заменить блок config.around
выше примерно следующим образом:
Подход 2
config.before(:each) do
DatabaseCleaner.start
end
config.after(:each) do
DatabaseCleaner.clean
end
ИЛИ
Подход 3
config.around(:each) do |example|
DatabaseCleaner.start
example.run
DatabaseCleaner.clean
end
Оба подхода 2 и 3 работают хорошо.
Я также просмотрел репозиторий git database_cleaner и обнаружил, что метод cleaning
действительно существует и со следующим кодом:
def cleaning(&block)
start
yield
clean
end
который точно такой же, как и в примере 3. Если он существует, то почему он недоступен? Я что-то пропустил. Любая настройка? Или подходит подход 2 или 3?