私はパラメータとして2つの可能な値を持つ期待値を宣言しようとしています。値に基づいて戻り値が異なるようにしたい。ここ 予想に複数の可能な値を定義するための嘲笑
は私が$mock = m::mock('FooBar\ClassA');
$mock->shouldReceive('has')->with('foo')->andReturn(false);
$mock->shouldReceive('has')->with('bar')->andReturn(true);
は、私はこのエラーを取得しようとしたものです
を持っています嘲笑\例外の\ NoMatchingExpectationException:Mockery_2__FooBar_ClassAが見つかりませんマッチングハンドラ は::( "バー")
私が読んだhttp://docs.mockery.io/en/latest/reference/expectations.html
しかし、私は答えを見つけることができません。私はandReturnUsing
で問題を解決するために頼りにしていますが、それは簡単です。 andReturnUsing
$mock->shouldReceive('has')->andReturnUsing(function ($value) {
switch ($value) {
case 'foo': return false;
case 'bar': return true;
}
});
誰でもいくつかのアイデアを持って使用せずに問題を解決する方法はありますか?
私もMockery specifying expected arguments for multiple calls
を読むが、私は試してみました同じことをthatsの、それはパラメータの型の検証を強制します。私はwithArgs
以来
$mock->shouldReceive('has')->withArgs(['foo'])->andReturnValues([false]);
$mock->shouldReceive('has')->withArgs(['bar'])->andReturnValues([true]);
はただのラッパーwith
私はwith
を使用することも可能だと思いますが、私はparamは、アレイ内でなければならないと思う答えを見つけて、[OK]