概要
XxxService
public function func($flag) { if($flag) { return $this->user_repository->xxx(); } return $this->user_repository->yyy(); }
こんなとき、xxxとyyyが読み込まれる場合をチェックしたい
コード
public testFunc($flag, $function_name) $mock = Mockery::mock('Tests\Unit\App\Stubs\StubUserRepository')->makePartial(); // 該当関数が一度だけ呼ばれるのを期待する $mock->shouldReceive($function_name) ->once(); (new XxxService($mock))->func($flag); } public function FuncDataProvider() { return [ 'flagがtrueの場合' => [ 'flag' => true, 'function_name' => 'xxx', ], 'flagがfalseの場合' => [ 'flag' => false, 'function_name' => 'yyy', ], ]; }
shouldReceiveの関数名の部分をdataProviderで分岐させてチェックする。