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

4

我刚刚安装了Puma,并且作为开发服务器运行正常。

但是当我运行集成测试时,Puma会在开发模式下启动,而不是测试模式。

Gemfile

group :test do
  gem puma
end

test/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
...

你用什么方法成功了,sscirrus? - ZedTuX
@ZedTuX 很抱歉,我记不起来了。我认为这不是下面的答案之一,但这也是2.5年前的情况。 - sscirrus
好的,谢谢您的评论。 - ZedTuX
3个回答

0

当你运行rake test时,是否会发生相同的行为?

请确保在您的config/puma.rb文件中(如果没有,请创建一个),有一行类似于environment ENV.fetch("RAILS_ENV") { "development" } - 没有它,我看到了与你一样的行为。


1
在Rails 5.1系统测试中,这对我不起作用。 - John Bachir

0

添加

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

在你的测试文件中,在所有测试之前。
这实际上类似于@ZedTuX的答案,但我无法在那里发表评论。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接