在替換原始模擬方法之前,有沒有一種方法可以在每次期望中只模擬一次方法一次?只模擬一次方法
我覺得像這樣的工作(注意once
)
class Klass
def self.meth
'baz'
end
end
describe Klass do
subject{ described_class.meth }
before{ allow(described_class).to receive(:meth).once.and_return('foo') }
it{ is_expected.to eq 'foo' }
context 'throwing in a context just to test' do
it{ is_expected.to eq 'foo' }
it{ is_expected.to eq 'foo' }
it{ is_expected.to eq 'foo' }
it 'only mocks once' do
expect(subject).to eq 'foo'
expect(subject).to eq 'baz' # this is the key
end # pass
end
end
不幸的是我得到這個錯誤:
(Klass (class)).meth(no args)
expected: 1 time with any arguments
received: 2 times
我本來預期已經得到了失敗,如果我說expect(Klass).to receive(:meth).once
而比較寬鬆的allow
。
我想知道我怎樣才能嘲笑一次和每期望一次。