答え
たとえば、本番環境の振る舞いをテストしたいときは下記のようにする。
RSpec 3
expect(Rails).to receive(:env).and_return('production'.inquiry)
RSpec 2
Rails.stub(:env).and_return('production'.inquiry)
解説
下記のようにすると、 Rails.env
は ActiveSupport::StringInquirer
のインスタンスだということがわかります。
[1] pry(main)> Rails.env.class
=> ActiveSupport::StringInquirer
ソース見るのが早いと思いますが、 ActiveSupport::StringInquirer
は文字列が等しいかどうかをメソッドで聞けるようになります。また、 String#inquiry
も追加されるので、下記のような振る舞いになります。
[2] pry(main)> 'production'.inquiry
=> "production"
[3] pry(main)> 'production'.inquiry.class
=> ActiveSupport::StringInquirer
[4] pry(main)> 'production'.inquiry.production?
=> true