У меня есть этот интеграционный тест для моего Rails приложения:не может иметь смысл поведения водосвинку
require 'test_helper'
class StudyCapybaraTest < ActionDispatch::IntegrationTest
def setup
@user = users(:archer)
@vocabs = @user.vocabs
Capybara.register_driver :selenium_chrome do |app|
Capybara::Selenium::Driver.new(app, :browser => :chrome)
end
Capybara.current_driver = :selenium_chrome
#Capybara.default_wait_time = 5
visit login_path
fill_in "session_email", with: @user.email
fill_in "session_password", with: 'password'
click_button "session_commit"
end
test "full study process" do
assert_title "Home | Word Up"
visit study_user_path(@user)
....
end
end
Жутко, когда я удалить первую строку первого теста «полный учебный процесс»
assert_title "Home | Word Up"
тест не пройден, поскольку пользователь тест не кажется, нужно войти в систему. Та же проблема возникает, когда я двигаюсь
visit study_user_path(@user)
в функцию настройки (как и раньше).
Но это ничего не меняет о последовательности и логике, верно? Единственное, что я могу придумать, это то, что утверждение приходит к раннему, а приложение не успевает выполнить инструкции, необходимые для удовлетворения утверждений.
Это вопрос срочности, и если да, то как я могу предотвратить их в будущем? Спасибо!
Thx, Tom. Не могли бы вы показать мне, как я могу настроить свой тест, чтобы он работал без злоупотребления утверждениями как тайм-ауты/перерывы? На самом деле я не хотел делать это утверждение
assert_title "Home | Word Up"
. Я изначально написал его, чтобы посмотреть, что происходит. Оптимально я хотел бы войти в систему и сразу же перейти наstudy_user_path
, так как это то, что я хочу проверить. Также, где бы вы зарегистрировали драйвер? (Мне нужно это в каждом тесте) – FlipЗарегистрируйте свой драйвер в test_helper. –
Почему вы считаете, что у вас есть утверждение о злоупотреблениях утверждениями? Все его высказывания - это убедиться, что этот текст появляется - именно это нужно сделать вашему тесту после входа в систему, чтобы узнать, что логин завершен. Я думаю, если бы вы захотели, вы могли бы написать вспомогательную функцию wait_for_login_to_complete или что-то, что просто делает утверждение, которое может сделать ваш тест более чистым. –