我想使用rspec结合faraday和faraday_middleware来测试rails应用程序的json响应。要使用法拉第,需要应用程序URL。在测试中,我想使用localhost +一个端口号。
问题是,如何在rspec测试环境中获取或设置当前应用程序实例的端口号?
有什么想法吗?
答案 0 :(得分:2)
我有同样的需求(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}/"