Rails测试在开发模式下使用服务器

时间:2017-05-13 02:10:28

标签: ruby-on-rails ruby-on-rails-4 puma

我刚刚设置了Puma,它作为开发服务器正常工作。

当我运行集成测试时,Puma正在开发模式,而不是测试模式。

的Gemfile

group :test do
  gem puma
end

测试/ test_helper.rb中

class ActionDispatch::IntegrationTest
  require 'rack/handler/puma'
  Capybara.server = :puma
  Capybara.register_server("puma") do |app, port|
    server = Puma::Server.new(app)
    server.add_tcp_listener(Capybara.server_host, port)
    server.run
  end
end

测试:

✗ RAILS_ENV="test" ruby -I test test/integration/computers_test.rb -n /polt/
Started with run options -n /polt/ --seed 3050
Puma starting in single mode...
* Version 3.8.2 (ruby 2.3.1-p112), codename: Sassy Salamander
* Min threads: 0, max threads: 4
* Environment: development
* Listening on tcp://127.0.0.1:49875
Use Ctrl-C to stop
...

3 个答案:

答案 0 :(得分:0)

运行config/puma.rb时是否会发生相同的行为?

我确保在你的environment ENV.fetch("RAILS_ENV") { "development" }文件中(如果你没有,请创建一个)你有{{1}}这样的行 - 如果没有它,我会看到你的行为。< / p>

答案 1 :(得分:0)

您需要将RACK_ENV设置为RAILS_ENV

RACK_ENV="test" RAILS_ENV="test" ruby -I test test/integration/computers_test.rb -n /polt/

然后,puma服务器将使用测试环境:

* Min threads: 0, max threads: 4
* Environment: test
* Listening on tcp://127.0.0.1:49875

答案 2 :(得分:0)

添加

ENV["RAILS_ENV"] = "test"
ENV["RACK_ENV"] = "test"

在测试之前的所有测试文件中。

这实际上类似于@ZedTuX的答案,但是我不能在那发表评论。