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