Номер порта приложения Rails в тесте rspec - PullRequest
5 голосов
/ 14 августа 2011

Я хотел бы протестировать ответы json приложения rails, используя rspec в сочетании с faraday и faraday_middleware. Чтобы использовать Фарадей, нужен URL приложения. В тестах я хотел бы использовать localhost + номер порта.

Вопрос в том, как мне получить или установить номер порта текущего экземпляра приложения в тестовой среде rspec?

Есть похожие вопросы, но нет удовлетворительных ответов здесь и здесь .

Есть идеи?

1 Ответ

2 голосов
/ 13 марта 2012

У меня была такая же потребность (Watir + RSpec), но проблема в том, что во время тестов по умолчанию не работает стек Rack ...

Я нашел это решение:

Вspec_helper.rb:

HTTP_PORT = 4000

test_instance_pid = fork do
  exec 'unicorn_rails -E test -p %d' % HTTP_PORT
end

at_exit do
  Process.kill "INT", test_instance_pid
  Process.wait
end

, которые запускают тестовый стек один раз для всех тестов спецификаций и убивают его в конце. (В этом примере я использую единорога, но мы можем представить себе использование любого другого сервера)

В спецификации я повторно использую константу HTTP_PORT для построения URL:

browser.goto "http://localhost:#{HTTP_PORT}/"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...