エンジニアのひよこ_level10

【毎日更新!】新卒2年目エンジニアブログです! プログラムだけじゃなく、マネジメントとかも書いていきたい!

【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を返すというコードが書けます。