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 に答える