RSpec测试类方法调用实例方法

时间:2013-01-22 20:35:46

标签: ruby-on-rails testing rspec

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

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

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

1 个答案:

答案 0 :(得分:3)

您可以在.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)