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