У меня вопрос по поводу интеграционных тестов Rails.
У меня есть это приложение, которое говорит с этим другим внутренним приложением.
Приложение отправляет запрос к internal_app, и один из параметров этого запроса включает идентификатор session_id, сохраненный в файле cookie сеанса.
По разным причинам запросы к внешним службам заглушаются с использованием гемов webmock
и vcr
. Это записывает запрос / ответ в файл фикстуры, поэтому при следующем запуске запроса он попадает в файл фикстуры вместо реальной службы.
Моя проблема в том, что session_id
меняется при каждом запуске теста. Это означает, что, согласно webmock, сделанный запрос не соответствует заглушке запроса, что приводит к провалу теста. В тестах контроллера я могу получить доступ к сеансу напрямую и изменить / заглушить все, что захочу. С интеграционными тестами я не могу получить доступ к сеансу напрямую, и поэтому я застрял, используя сессионный идентификатор, который Rails генерирует для теста. Кто-нибудь знает хороший способ изменить / заглушить session_id для интеграционных тестов, чтобы что-то ожидаемое? Есть несколько менее предпочтительных способов, которые я рассматриваю (например, включение гема vcr для этих интеграционных тестов), но я бы предпочел найти способ, чтобы вместо session_id было какое-то ожидаемое значение.
Тесты выполняются с помощью Capybara / Poltergeist / phantomjs в приложении Rails 5.1.