1
스텁에 문제가 있습니다. 어떻게 작동하는지 오해해야합니다.Rspec 스텁 행동
스텁은 생성 된 컨텍스트 내에 만 존재합니까? 그것은 내 기대이지만, 내 경험에서 문맥 내에서 메소드를 스텁한다면 다른 컨텍스트에서 여전히 존재합니다.
내 컨트롤러 시험이 유사합니다
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']
을 반환
이 파일은 테스트하고있는 실제 파일입니까 아니면 가상 코드 했습니까? 내가 물어 보는 이유는 당신이'load_articles'를 어디에서든지 쓴 것이 아니기 때문입니다. 여러분은'meth1'과'meth2'를 스터 빙하고 있습니다. 이와 같은 컨텍스트 블록 내에서 적절한 스텁을 사용하면 나타나는 동작이 발생하지 않아야합니다. –
'meth1'과'meth2'는'article'에서'load_articles'가 호출하는 것일뿐입니다.하지만 더 많은 부분이 진단을 도와 줄 수 있습니다. 이 방법에 대한 몇 가지 특성이 유용 할 수 있습니다. 또한 거기에 간섭을 일으킬 수있는 캐싱/메모가 있습니까? –