• 1000 ваши тесты и ваше приложение, предотвращая проблему того, что тесты не могут видеть изменения ваших приложений.
Также, если вы используете Selenium в этих системных тестах, основная проблема, с которой вы имеете дело, заключается в том, что действия в браузере происходят асинхронно из ваших тестов, поэтому только то, что вы сказали вашему тесту принять диалоговое окно, не означает, что действие по удалению компании завершено, когда оно вернется. Способ проверить это - просто немного поспать перед проверкой изменений в count
. Хотя это сработает, это не лучшее окончательное решение, потому что оно приводит к потере времени. Вместо этого вы должны проверять визуальное изменение, указывающее, что действие завершено, прежде чем проверять новый счетчик
test "destroy" do
companies_count = Company.count
visit company_path(@company)
accept_confirm do
click_on "Delete"
end
assert_text "Company Deleted!" # Check for whatever text is shown to indicate the action has successfully completed
assert_equal (companies_count - 1), Company.count
end
Это работает, потому что предоставленные Capybara утверждения имеют поведение ожидания / повторной попытки, которое позволяет приложению до указанного c количество времени, чтобы догнать то, что ожидает тест.
Примечание: я заменил page.driver...
на правильное использование модального API системы Capybaras - если вы используете page.driver...
обычно это указывает на то, что вы делаете что-то не так.