2016-04-08 26 views
0

私はパラメータとして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]

答えて

関連する問題