How to change the environment variable of rails in testing
question from:https://stackoverflow.com/questions/4266497/change-rails-environment-in-the-mid-of-testingHow to change the environment variable of rails in testing
question from:https://stackoverflow.com/questions/4266497/change-rails-environment-in-the-mid-of-testingYou could do
Rails.stub(env: ActiveSupport::StringInquirer.new("production"))
Then Rails.env
, Rails.development?
etc will work as expected.
With RSpec 3 or later you may want to use the new "zero monkeypatching" syntax (as mentioned by @AnkitG in another answer) to avoid deprecation warnings:
allow(Rails).to receive(:env).and_return(ActiveSupport::StringInquirer.new("production"))
I usually define a stub_env
method in a spec helper so I don't have to put all that stuff inline in my tests.
An option to consider (as suggested in a comment here) is to instead rely on some more targeted configuration that you can set in your environment files and change in tests.