【发布时间】:2021-03-24 08:23:26
【问题描述】:
我正在测试一个使用发出外部请求的客户端的类,我想模拟这个客户端,但要验证它是否被调用,但是我遇到了双重错误。
我的测试看起来像这样:
describe '#execute' do
let(:attributes) { {foo: 'bar'} }
let(:client_double) { double('client', create: nil) }
let(:use_case) { described.class.new }
before do
allow(Client::Base).to receive(:new).and_return(client_double)
use_case.execute(attributes)
end
it 'creates something' do
expect(Something.find_by(foo: 'bar')).not_to be_nil
end
it 'calls client' do
expect(client).to have_received(:create).with('bar')
end
end
第一个示例按预期通过,但是 rspec 在第二个示例中不断中断,给我这个错误:
#<Double "foo"> was originally created in one example but has leaked into another example and can no longer be used. rspec-mocks' doubles are designed to only last for one example, and you need to create a new one in each example you wish to use it for.
有人知道我能做些什么来修复它吗?
【问题讨论】: