1

我正在寻找测试一个类方法是否调用了一个特定的实例方法。有没有办法做到这一点?这是我所拥有的最好的,但它失败了。

describe '#foo' do
  let(:job) { create :job }
  it 'calls job.bar' do
    job.should_receive(:bar)
    Job.foo
  end
end

我需要确保调用了正确的作业实例,而不仅仅是任何实例。我很感激任何帮助。

4

1 回答 1

4

.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)

于 2013-01-22T21:37:13.880 回答