1

注入されたオブジェクトをモックするのに問題があります。例えば:

class Foo
  def initialize(bar = Bar.new)
    @bar = bar
  end

  def run
    @bar.do_something_cool
  end
end

# Rspec
describe Foo do
  it "should do something cool" do
    mock_bar = mock("bar")
    mock_bar.stub(:do_something_cool).and_return(nil)

    real_foo = Foo.new(mock_bar)
    real_foo.run

    mock_bar.should_receive(:do_something_cool).once
  end
end

これを実行すると、「do_something_cool」が呼び出されないという仕様が失敗します。

 expected: 1 time
 received: 0 times

ただし、「do_something_cool」をスタブしないと、次のエラーが発生します

Mock "bar" received unexpected message :do_something_cool with (no args)

何か案は?

4

1 に答える 1

4
mock_bar.should_receive(:do_something_cool).once 

前にあるはずです

real_foo.run
于 2012-05-01T22:46:12.347 に答える