2016-03-14 2 views
0

Я использую наблюдателей в своем приложении Rails для уведомлений, каналов активности и т. Д. Они сохраняют мои модели и контроллеры чистыми, отлично работают на стороне приложения, интеграционный тест (я сам тестировал их интенсивно/успешно). Но я не могу за жизнь меня заставить их работать в интеграционных тестах. Я не следующий в спецификации/поддержки/observers.rb (в качестве проверки вменяемости я бы в идеале только включить их для удобства испытаний, если я могу заставить их работать на всех.):Наблюдатели Rails не стреляют при запуске тестов интеграции Capybara

RSpec.configure do |config| 
    config.before do 
    ActiveRecord::Base.observers.enable :all 
    end 
end 

Независимо от того, что я do, я не могу заставить своих наблюдателей уйти во время моих интеграционных тестов (именно это я действительно хочу использовать, чтобы гарантировать, что все действительно работает).

У кого-нибудь есть представление об этом или есть какие-либо подсказки относительно того, почему я мог испытывать это? Я использую Rails 5.0.0beta3 и последние версии рельсовых наблюдателей, rspec-rails и capybara (из главных ветвей github).

+1

если вы используете мастер ветвь рельсов-наблюдатель - какой тип наблюдателей у вас есть? Если вы используете транзакционные светильники - ничего не запускается после того, как фиксация будет срабатывать. –

+0

Хм. Я просто объявляю их как: класс ModelObserver gregblass

+1

, но являются ли они before_save, after_update и т. Д.? Также вы зарегистрировали их в своих конфигурациях приложений config.active_record.observers =: model_observer' –

ответ

0

Это действительно не ответ на мой вопрос, но никто не успел подождать. Никто больше не заботится о наблюдателях, потому что они были удалены из Rails 4. Рядом с ними нет связанных с ними тем, связанных с ними, и capybara.

Итак, для того, чтобы двигаться дальше и получить покрытие интеграционного теста на код, который мне нужен, я реорганизую свой код, чтобы использовать проблемы, которые включают обратные вызовы. Это устраняет зависимость наблюдателя, и на самом деле я смог абстрагировать свой код еще больше, потому что многие мои наблюдатели делали почти то же самое, и я имел в виду то, что мои наблюдатели вызывали в объектах службы в любом случае.

У тестов интеграции нет проблем с их запуском.

Наблюдатели RIP.

https://stackoverflow.com/a/18581715/2202674

Смежные вопросы