2011-08-14 37 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}/"