1

我希望能够将多个.with期望链接在一起。目前我将它们放在不同的行 -

foo.expects( :bar ).with( a )
foo.expects( :bar ).with( b )
foo.expects( :bar ).with( c )

有了.returns你就可以做 -

foo.expects( :bar ).returns( a, b, c )

理想情况下,我希望能够 -

foo.expects( :bar ).returns( a, b, c ).with( a, b, c )

或者

foo.expects( :bar ).returns( a, b, c ).with( a ).with( b ).with( c )
4

1 回答 1

1

你不能with在同一个期望中多次调用,因为with会覆盖前一个。

# File 'lib/mocha/expectation.rb', line 221

def with(*expected_parameters, &matching_block)
  @parameters_matcher = ParametersMatcher.new(expected_parameters, &matching_block)
  self
end

它不同,returns因为returns积累了期望。

# File 'lib/mocha/expectation.rb', line 373

def returns(*values)
  @return_values += ReturnValues.build(*values)
  self
end

所以,是的,你必须以你正在做的方式来做,expects在同一个对象中多次调用。

foo.expects(:bar).with(a)
foo.expects(:bar).with(b)
foo.expects(:bar).with(c)
于 2021-02-02T16:52:04.813 回答