我在使用 stub 时遇到了一些问题,我想我一定是误解了它们的工作原理。
stub 是否只存在于它们被创建的上下文中?这是我的期望,但根据我的经验,如果我在一个上下文中 stub 一个方法,它仍然存在于另一个上下文中。
我的 Controller 测试与此类似:
describe '.load_articles' do
context 'articles' do
before(:each) do
Article.stub_chain(:meth1, :meth2).and_return(['article'])
end
it 'sets articles' do
controller.load_articles.should == ['article']
end
end
context 'no articles' do
before(:each) do
Article.stub_chain(:meth1, :meth2).and_return([])
end
it 'sets article' do
controller.load_articles.should == []
end
end
end
对于第二个示例,controller.load_articles
在我期待 []
['article']
我已经坚持这个太久了;非常感谢任何帮助!
最佳答案
每个示例后都会清除 stub 。你可以很容易地证明这一点:
class Numero; end
describe Numero do
context "Uno" do
before do
Numero.stub_chain(:meth1, :meth2) { 'uno' }
end
it "unos" do
Numero.meth1.meth2.should == 'uno'
end
end
context "Dos" do
before do
Numero.stub_chain(:meth1, :meth2) { 'dos' }
end
it "dosses" do
Numero.meth1.meth2.should == 'dos'
end
end
end
关于ruby-on-rails - Rspec stub 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634791/