Rails, тестовый почтовый URL - PullRequest
2 голосов
/ 21 июля 2011

Мое приложение отправляет электронные письма, содержащие абсолютные URL.

Я установил хост в config / environment / development.rb

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

Теперь я хочу проверить, содержит ли Email действительный URL. Используя регулярное выражение, я вынимаю полный URL-адрес из электронной почты и хочу посетить этот адрес с помощью функции Capybara.

mail = ActionMailer::Base.deliveries.last
address = mail.body.to_s[%r{http.+/edit}]
visit address;

Но я не знаю, какой хост должен быть установлен в config / environment / test.rb

Когда я устанавливаю localhost: 3000, он пытается подключиться к моему локальному серверу, запущенному командой rails server.

У вас есть идеи, чтобы решить эту проблему?

Ответы [ 4 ]

4 голосов
/ 04 ноября 2011

Что сработало для меня:

Capybara.server_port = 3005

(см. https://github.com/vangberg/capybara/commit/5784f03d6aa87e63e759abda794a43738e4f320f)

и

config.action_mailer.default_url_options = { :host => 'localhost:3005' }
2 голосов
/ 19 марта 2013

Чтобы это работало, когда жесткое кодирование портов Capybara недоступно (например, параллельные спецификации), поместите это в ваш spec_helper.rb

 YourApp::Application.config.action_mailer.default_url_options[:host] = "localhost:#{Capybara.server_port}"
0 голосов
/ 23 июля 2011

Эй, вот страшный фрагмент кода, который может вам помочь.Я использую email_spec , чтобы упростить работу с электронной почтой в сценариях спецификаций и огурцов, и у него уже есть некоторые помощники, чтобы упростить вашу задачу.В моем приложении ситуация немного сложнее, поэтому я был вынужден написать свой собственный парсер.Вот код .Наслаждайтесь:)

0 голосов
/ 21 июля 2011

Вместо того, чтобы посещать URL, почему бы просто не проверить его по RegEx, убедитесь, что он действителен, правильно закодирован, указывает на нужный контроллер.

Вы, вероятно, не хотите фактически взаимодействовать ссервер, а если вы не производственный сервер, так localhost: 3000 вариант goo

...