【问题标题】:Rails application's port number in a rspec testrspec 测试中的 Rails 应用程序的端口号
【发布时间】:2012-03-14 00:28:55
【问题描述】:

我想使用 rspec 结合 faraday 和 faraday_middleware 来测试 rails 应用程序的 json 响应。要使用法拉第,需要应用程序 URL。在测试中我想使用 localhost + 一个端口号。

问题是,如何在 rspec 测试环境中获取或设置当前应用实例的端口号?

herehere 有类似的问题,但没有令人满意的答案。

有什么想法吗?

【问题讨论】:

  • 我需要完全相同的东西。希望你能得到答案。
  • 刚刚发布了对类似问题here的回复。

标签: ruby-on-rails rspec


【解决方案1】:

我也有同样的需求(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

它为所有规范测试启动一次测试堆栈,并在最后终止它。 (在这个示例中,我使用的是 unicorn,但我们可以想象使用任何其他服务器)

在规范中,我重用 HTTP_PORT 常量来构建 URL:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多