エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【Mockery】shouldRecieveで、元の関数をそのまま動かす【460日目】

こんなときに使う

モックしたけど、元の関数の動きをそのまま使いたい。

例えば、回数だけをチェックするとか、特定の引数のときだけ動作を変えたいとか。

passthru関数

$mock->shouldRecieve('func')->once()->passthru();

これで、元のfuncがそのまま動きますが、一度だけ呼び出すということがテスト出来ます。

引数に応じてテストを変える

// 引数1の場合は、元の関数をそのまま動かしたのと一緒
$mock->shouldReceive(xxx)
    ->with(1)
    ->passthru();

$mock->shouldReceive(xxx)
    ->with(2)
    ->andReturn(2);

これで、1のときは、普通、2のときは2を返すというコードが書けます。