我刚刚设置了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
...
答案 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的答案,但是我不能在那发表评论。