Я пытаюсь создать следующий тест: Редактировать модель (клиентская сторона), проверить, обновлено ли представление, и если модель изменилась в базе данных.Teardown, вызванный в середине теста Capybara
есть код:
test 'a' do
user = User.joins(:organization_users).find_by organization_users: { role: OrganizationUser.roles.values_at(:ORGANIZER, :ADMINISTRATOR) }
sign_in_user user
criterion = create(:criterion, scoring_id: @scoring.id, name: "Test criterion name",
description: "Test description")
step = create(:step, criterion_id: criterion.id)
visit "scorings/" + (@scoring.id).to_s + "/criteria"
find("#criteria > div > div > a > i").click()
fill_in 'name', with: 'New name'
fill_in 'description', with: 'New description'
find('#criterion-modal > div:nth-child(2) > form > div:nth-child(4) > input').click()
criterion = criterion.reload
assert criterion.name == 'New name'
end
` Driver:
Capybara.register_driver :poltergeist do |app|
Capybara::Poltergeist::Driver.new app , { phantomjs: Phantomjs.path }
end
Capybara.javascript_driver = :poltergeist
Capybara.current_driver = Capybara.javascript_driver
Teardown:
teardown do
DatabaseCleaner.clean
ActiveRecord::Base.connection.close
Capybara.reset_sessions!
end
Как вы можете увидеть в конце теста я перезагружать критерий , но когда я делаю это, вызывается функция разрыва. После этого база данных очищается, и я получаю ошибку «не могу найти критерий id: 1». Я использую только minitest, заводскую девушку и Capybara. Так что я хочу понять, почему Teardown вызывается, так как это не конец теста и как я могу это исправить?
спасибо.
Thank f или ваш совет, я отредактировал свой пост и добавил то, что вы сказали, отсутствует. Я не понимаю что-то, Срыв за вызовом до конца моего теста заканчивается, я проверил это с некоторым отладочным сообщением. Сейчас я проверяю что-то на своей странице. Запрос обновления - это Ajax one soo после отправки, я проверяю, действительно ли просмотр был обновлен. Но при перезагрузке такая же ошибка сохраняется. То, что я действительно хочу сделать, это проверить, обновлено ли представление, и если объект-критерий обновлен в базе данных. – TyLO
@TyLO Где вы разместили отладочные сообщения, которые, по вашему мнению, проверяют заказ? Это просто невозможно, чтобы разрывы выполнялись до завершения тестового кода (если вы не выполняете параллельные тесты и не имеете проблем в этой настройке). Во время разговора вы должны вызвать 'Capybara.reset_sessions!' Перед вызовом 'DatabaseCleaner.clean' и не должно быть необходимости закрывать соединение. Если это не решит вашу проблему, добавьте команду, которая проверяет что-то на странице на ваш тест, чтобы она была завершена, и добавьте местоположение отладочных сообщений и фактический результат, который вы получите. –