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