1

我在存根方面遇到了一些麻烦,我想我一定是误解了它们的工作方式。

存根仅存在于它们创建的上下文中吗?这是我的期望,但根据我的经验,如果我在一个上下文中存根一个方法,它仍然存在于另一个上下文中。

我的控制器测试与此类似:

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'][]

我已经坚持了太久了;任何帮助是极大的赞赏!

4

1 回答 1

1

在每个示例之后清除存根。你可以很容易地证明这一点:

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
于 2013-02-01T03:36:15.273 回答