2016-11-30 3 views
0

Для моих тестов, я хотел бы окурок/фальсифицировать URL, что тесты с использованием, так что в Rails мой request.host показывает, как что-то, кроме «www.example.com»Rspec/Capybara/Полтергейст: как заглушить URL?

В моем исследовании, большинство людей предполагают, изменение capybara's app_host, но это работает только при использовании драйвера по умолчанию. При использовании Poltergeist он действительно перейдет на этот URL.

Есть ли что-нибудь еще, что я могу использовать?

+1

При использовании Capybara/Poltergeist вы выполняете функциональные тесты, которые проверяют полный стек. Вы не должны пытаться заглушить/издеваться над чем-нибудь, когда делаете это (может быть, вам нужна спецификация контроллера вместо?). Кроме того, если вы не используете стандартный тестовый драйвер стойки, вы должны увидеть «127.0.0.1» для request.host в своем приложении (не www.example.com). Вы можете изменить Capybara.app_host на все, что хотите, но тогда вам нужно будет убедиться, что ваш локальный DNS решил, что 127.0.0.1 (/ etc/hosts entry и т. Д.). Возможно, вам нужно объяснить немного больше того, что именно вы пытаетесь сделать. –

+0

Да, я предполагаю, что DNS-решение для 127.0.0.1 - это то, что я хочу (это то, что происходит в процессе разработки), но я немного обеспокоен тем, что может произойти в CI, например CircleCI. Есть ли способ настроить файл хоста с помощью таких сервисов? Это может быть мой лучший выбор. – amclelland

+0

Что именно вы пытаетесь проверить, чтобы это доменное имя изменилось? –

ответ

0

При использовании Capybara/Poltergeist вы выполняете функциональные тесты, которые проверяют полный стек. Вы не должны пытаться заглушить/издеваться над чем-нибудь, когда делаете это (может быть, вам нужна спецификация контроллера вместо?).

Кроме того, если вы не используете драйвер стеллажных тестов по умолчанию, вы должны увидеть «127.0.0.1» для request.host в своем приложении (не www.example.com). Вы можете изменить Capybara.app_host на все, что хотите, но тогда вам нужно будет убедиться, что ваш локальный DNS решил, что 127.0.0.1 (/ etc/hosts entry и т. Д.). Большинство систем CI также позволяют указывать разрешения DNS. https://circleci.com/docs/configuration/#hosts

+0

Я думаю, что есть предел для этого «заглушки ничего» менталитета. Например. если вы тестируете платежи, вы не захотите отправлять реальные деньги. Я чувствую, что внешние зависимости (платежные процессоры, AWS и т. Д.) Могут быть заглушены. Поправьте меня, если я ошибаюсь. –

+0

@MarosHluska Отчасти правильно. В тесте функции вы используете подделку для службы, которая обрабатывает платежи (например, https://github.com/thoughtbot/fake_stripe). Вы не хотите делать вещи, которые изменяют ваш код в функциональных тестах (что издевается/стучит), иначе вы не уверены, что ваш производственный код был фактически протестирован. –

Смежные вопросы