rspec希望收到不工作

abd*_*mad 0 rspec ruby-on-rails

我有以下类结构:

class A
  def process(processor)
    processor.process_x
  end
end

class Processor
  def process_x
  end
end
Run Code Online (Sandbox Code Playgroud)

以及以下测试:

context "when process is called" do
  object_a = A.new
  processor = Processor.new

  it "calls processor.process_x" do
    object_a.process(processor)
    expect(processor).to receive(:process_x)
  end
end
Run Code Online (Sandbox Code Playgroud)

但测试仍然失败.我甚至放了一个byebug,看到处理器的process_x方法被调用

我该怎么解决这个问题?

abd*_*mad 6

我看到我的问题,看完这个,我意识到我应该先加的期望,然后调用方法:

context "when process is called" do
  object_a = A.new
  processor = Processor.new

  it "calls processor.process_x" do
    expect(processor).to receive(:process_x) *** HERE
    object_a.process(processor) *** HERE
  end
end
Run Code Online (Sandbox Code Playgroud)