#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. Я тоже думал об этом, если это единственный вариант.