【发布时间】:2019-03-06 15:18:07
【问题描述】:
我正在做一些单元测试。其中一个使用在我的应用程序MyBigApp::Env 中设置的特定配置变量,如下所示:
{:country=>'uk', :another_hosts=>["192.168.99.105"]}
所以我用MyBigApp::Env.country访问它
但是在我的单元测试中,我希望用于测试的 country 成为一些东西。
使用 rspec 我见过 stub 但无法让它工作 - 任何我出错的想法:
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}
作为一种解决方法,目前我必须将环境变量保存在 before(each) 块中的临时变量中,然后将其返回到 after(each) 中的原始变量。这对我来说真的很冒险。我在想想象服务正在运行并且有人运行单元测试,它可能会在测试运行的那个小实例中影响最终用户。
任何帮助将不胜感激。
谢谢
【问题讨论】: