使用Rspec,有没有办法可以将除第一个调用之外的所有调用都存根?
示例:
class Book
def foo
"Book#foo()"
end
end
在规范中:
it 'x' do
# .... (do something to stub all but the first method call to `Book#foo`)....
b = Book.new
expect(b.foo).to eq('Book#foo()')
expect(b.foo).to be_nil
expect(b.foo).to be_nil
end
任何?
答案 0 :(得分:0)
您可以在第一个中使用ordered expectations和call the original method。
也可以看看sequences?
答案 1 :(得分:0)
是的,这是可行的。我实际上没有对此进行测试,但如果我的记忆对我有用,那么应该这样做:
it 'does some funky stubbing' do
book = Book.new
# the first time it will not be stubbed, all subsequent times it will return nil
allow(book).to receive(:foo) { book.foo, nil }
expect(book.foo).to eq('Book#foo()')
expect(book.foo).to be_nil
expect(book.foo).to be_nil
end