Я работаю над некоторыми юнит-тестами.Один из них использует определенную переменную конфигурации, установленную в моем приложении MyBigApp::Env
, которая выглядит следующим образом:
{:country=>'uk', :another_hosts=>["192.168.99.105"]}
Поэтому я обращаюсь к ней с помощью MyBigApp::Env.country
Однаков моем модульном тесте я хочу, чтобы country
для теста стал чем-то.
Используя rspec, я видел заглушку, но не могу заставить ее работать - любые идеи, где я ошибаюсь:
MyBigApp::Env.stub(:[]).with('country').and_return('gr')
Также пробовал это (как показано выше, устарел):
allow(MyBigApp::Env).to receive('country').and_return('gr')
Фактически в качестве теста, я также пытался:
my_hash = {:uri=>nil}
allow(my_hash).to receive(:[]).with(:uri).and_return('Over written!')
p my_hash
и это тоже не обновилось - он просто вернул {:uri=>nil}
В качестве обходного пути, в данный момент я должен сохранить env var во временной переменной в блоке before(each)
верните его обратно в оригинал в after(each)
.Это очень рискованно для меня.Я думаю, представьте, что служба работает, и кто-то запускает модульные тесты, это может повлиять на конечного пользователя в этом маленьком экземпляре, когда выполняется тест.
Любая помощь будет оценена.
Спасибо