我刚刚成立彪马和它的正常工作作为开发服务器。
当我运行一个集成测试,彪马已经开始开发模式,而不是测试模式。
的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
...
是否在运行rake test
相同的行为发生?
我会确保在您的config/puma.rb
文件(创建一个,如果你没有一个),你有这样一行environment ENV.fetch("RAILS_ENV") { "development" }
- 没有它,我是看到你相同的行为。
您需要设置RACK_ENV
为RAILS_ENV
到:
RACK_ENV="test" RAILS_ENV="test" ruby -I test test/integration/computers_test.rb -n /polt/
然后彪马服务器将使用测试环境:
* Min threads: 0, max threads: 4
* Environment: test
* Listening on tcp://127.0.0.1:49875
加
ENV["RAILS_ENV"] = "test"
ENV["RACK_ENV"] = "test"
在您的测试文件,之前所有测试。
这实际上类似于@ZedTuX答案,但我无法评论那里。