Rails tests are using server in development mode

Viewed 955

I just set up Puma and it's working fine as a development server.

When I run an integration test, Puma is starting in development mode, not test mode.

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

A test:

āœ— 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 Answers

You need to set the RACK_ENV as the RAILS_ENV to :

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

Then the puma server will use the test environment:

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

Add

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

in your test file, before all tests.

This is actually similar to @ZedTuX answer, but I cannot comment there.

Related