Тестирование маршрута rspec и хосты - PullRequest
19 голосов
/ 25 августа 2011

Я вижу, что могу тестировать маршруты с помощью rspec следующим образом:

get("/").should route_to("welcome#index")

но у меня есть ограничения на основе имени хоста или частей имен хостов и перенаправления между несколькими. Как указать имя хоста при тестировании?

Как запустить тесты с правильной конфигурацией? Я попытался распечатать root_url, и я получил:

Отсутствует хост для ссылки на! Пожалуйста, укажите параметр: host, установите default_url_options [: host], или установить: only_path в true

Ответы [ 3 ]

53 голосов
/ 07 октября 2011

Такая же ошибка возникает на моем при каждом запуске rspec spec/

Фактически вся ошибка:

Failure/Error: @user = Factory(:user)
     ActionView::Template::Error:
       Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
     # ./app/views/devise/mailer/confirmation_instructions.html.erb:5:in `_app_views_devise_mailer_confirmation_instructions_html_erb__980323237__638702928'
     # ./spec/models/campaign_spec.rb:21

Следующая строка:

# ./app/views/devise/mailer/confirmation_instructions.html.erb:5:in `_app_views_devise_mailer_confirmation_instructions_html_erb__980323237__638702928'

на самом деледал мне подсказку, что разработчик - тот, кто выбрасывает ошибку.

Оказывается, я не установил

config.action_mailer.default_url_options = { :host => 'localhost:3000' }

в config/environments/test.rb (только в development.rb)

Добавление параметра конфигурации очистило мои ошибки.Я подозреваю, что вы используете другие драгоценные камни, для которых требуется тот же набор параметров.

19 голосов
/ 20 апреля 2013

Ничто из вышеперечисленного не сработало для меня. Добавление следующего в мой spec_helper.rb (в моем случае spec / support / mailer.rb, который включен в spec_helper.rb) исправило ошибку:

Rails.application.routes.default_url_options[:host] = 'test.host'

8 голосов
/ 07 сентября 2012

В моем случае мне пришлось добавить

 config.action_mailer.default_url_options = { :host => 'localhost:5000' }
От

до

config/environments/test.rb

потому что я использовал FactoryGirl для создания пользователя, не пропуская email_confirmation от пользователя.

...