エンジニアのひよこ_level10

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

【テスト】dataProviderで分岐で読み込む関数名をチェックする【439日目】

概要

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で分岐させてチェックする。