как rspec протестировать значение класса @@var из ENV

#ruby #rspec #environment-variables

Вопрос:

У меня есть класс, в котором переменная класса @@var получает свое значение на основе параметра ENV. и метод класса использует этот @@var для выполнения определенной задачи.

Однако я, похоже, не могу найти способ проверить этот метод класса для случая, когда ENV имеет желаемое значение.

Вот код для упрощенного теста класса и спецификации

 class Doer
  @@master = (ENV.has_key?('MASTER') amp;amp; ENV['MASTER'] == 'yes')

  def self.check_master
    @@master
  end
end
 
 require_relative '../bin/doer'

describe Doer do
  describe '#check_master' do
    context 'env init' do

      it 'is set to yes' do
        stub_const('ENV', {'MASTER' => 'yes'})
        expect(Doer.check_master).to eq(true)
      end

      it 'is set to other value' do
        stub_const('ENV', {'MASTER' => 'no'})
        expect(Doer.check_master).to eq(false)
      end

      it 'is NOT set or unavailable' do
        expect(Doer.check_master).to eq(false)
      end
    end
  end
end
 

Комментарии:

1. Обязательно ли это должно быть @@class_variable ? Почему бы не поместить этот логин в check_master (сохраненный в памяти, если вы беспокоитесь о затратах на поиск)?

2. Я тоже думал об этом, если это единственный вариант.