Rspec Stubbing Поведение

У меня возникли проблемы с заглушками, и я думаю, что неправильно понимаю, как они работают.

Существуют ли заглушки только в том контексте, в котором они созданы? Это мое ожидание, но по моему опыту, если я заглушу метод в контексте, он все еще существует в другом контексте.

мой тест контроллера похож на это:

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'] когда я ожидаю []

Я застрял на этом слишком долго; любая помощь очень ценится!

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
Другие вопросы по тегам