2011-08-14 39 views
5

我想測試使用rspec結合法拉第和faraday_middleware的Rails應用程序的json響應。要使用法拉第,需要應用程序URL。在測試中我想使用localhost +端口號。Rails應用程序的端口號在rspec測試

問題是,我怎樣在rspec測試環境中獲取或設置當前應用程序實例的端口號?

還有一個類似的問題,但沒有滿意的答案herehere

任何想法?

+0

上午一樣。希望你能得到答案。 – Tass

+0

剛發佈了對類似問題的回覆[here](http://stackoverflow.com/a/17496025/535171)。 – JKubecki

回答

2

我有同樣的需要(+的Watir RSpec的),但問題是:有是在測試過程中運行默認情況下沒有機架堆疊...

我發現這個解決方案:

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不斷建立網址:需要確切的

browser.goto "http://localhost:#{HTTP_PORT}/"