2017-11-21 2 views
0

Mockを、特定の引数にはtrue、他の引数にはfalseを返すメソッドで作成します。Mockeryの特定の引数に戻り値の期待値を指定する最短方法

私はこれを達成することができます

$this->myMock = Mockery::mock(MyClass::class); 
$this->myMock->shouldReceive('myMethod')->with('my-argument')->andReturn(true); 
$this->myMock->shouldReceive('myMethod')->andReturn(false); 

しかしそこに、私は多くモックのためにこれをしなければならないとして、これを指定する任意の短い方法だ、と多くのコードのためのように見える場合、私は思っていましたこの単純な目的(私のプロパティ/クラス/メソッド/引数の名前はこの例よりもかなり長いことに注意してください)。

答えて

0

私が使用することができます発見:

$this->myMock = Mockery::mock(MyClass::class); 
$this->myMock->shouldReceive('myMethod')->passthru(); 

これは、引数に応じて、trueまたはfalseを返します実際のオブジェクトへmyMethod()への呼び出しを延期します - これは明らかにdoesnの質問にあるコードと同じことをするのではなく、私のシナリオではうまくいくが、それはかなり短い。

1

MockeryのandReturnUsing -methodを使用できます。提供された引数を評価して戻り値を計算するにはクロージャが必要です。以下のように動作するはずです:

$this->mock 
    ->shouldReceive('myMethod') 
    ->andReturnUsing(function ($argument) { 
     if ($argument) { 
      return true; 
     } 

     return false; 
    }); 
関連する問題