У меня есть гем, у которого есть метод, который действует по-разному в зависимости от Rails.env:
def self.env
if defined?(Rails)
Rails.env
elsif ...
А теперь я хотел бы написать спецификацию, которая проверяет этот путь кода. Сейчас я делаю это так:
Kernel.const_set(:Rails, nil)
Rails.should_receive(:env).and_return('production')
...
И это нормально, просто некрасиво. Другой способ - объявить это в spec_helper
:
module Rails; end
, и он тоже работает. Но может есть способ получше? В идеале это должно работать:
rails = double('Rails')
rails.should_receive(:env).and_return('production')
Но это не так. А может я что-то не так делаю?