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

问题描述 投票:3回答:2

我刚刚成立彪马和它的正常工作作为开发服务器。

当我运行一个集成测试,彪马已经开始开发模式,而不是测试模式。

的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
...
ruby-on-rails ruby-on-rails-4 puma
2个回答
0
投票

是否在运行rake test相同的行为发生?

我会确保在您的config/puma.rb文件(创建一个,如果你没有一个),你有这样一行environment ENV.fetch("RAILS_ENV") { "development" } - 没有它,我是看到你相同的行为。


0
投票

您需要设置RACK_ENVRAILS_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

0
投票

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

在您的测试文件,之前所有测试。

这实际上类似于@ZedTuX答案,但我无法评论那里。

© www.soinside.com 2019 - 2024. All rights reserved.