我正在寻找测试一个类方法是否调用了一个特定的实例方法。有没有办法做到这一点?这是我所拥有的最好的,但它失败了。
describe '#foo' do
let(:job) { create :job }
it 'calls job.bar' do
job.should_receive(:bar)
Job.foo
end
end
我需要确保调用了正确的作业实例,而不仅仅是任何实例。我很感激任何帮助。
我正在寻找测试一个类方法是否调用了一个特定的实例方法。有没有办法做到这一点?这是我所拥有的最好的,但它失败了。
describe '#foo' do
let(:job) { create :job }
it 'calls job.bar' do
job.should_receive(:bar)
Job.foo
end
end
我需要确保调用了正确的作业实例,而不仅仅是任何实例。我很感激任何帮助。
.foo
您可以在获取实例的方法上使用存根。
例如:
describe '.foo' do
let(:job) { create :job }
it 'calls job.bar' do
Job.stub(:find).and_return job
job.should_receive(:bar)
Job.foo
end
end
这样做是为了确保您期望调用方法的实例是实际使用的实例.foo
。
您可以为此添加期望或参数匹配器,因此:
Job.should_receive(:find).with(job.id).and_return(job)