PHP
CodeIgniter
PHPUnit

CodeIgniterのPHPUnitでモックの返り値を動的に設定する

ci-phpunit-testのモンキーパッチを使用して返り値を動的に設定する際の書き方

返り値を設定

$return_list = [1, 2, 3];
$index = 0;

MonkeyPatch::patchMethod(
    'Class',
    [
        'method' => function ($argument) use ($return_list, &$index) {
            return $return_list[$index++];// 呼ばれた順で返り値を設定($argumentで判定して出しわけもできます)
        },
    ]
);

または

$return_list = [1, 2, 3];

MonkeyPatch::patchMethod(
    'Class',
    [
        'method' => function ($argument) use ($return_list) {
            static $index = 0;
            return $return_list[$index++];// 呼ばれた順で返り値を設定($argumentで判定して出しわけもできます)
        },
    ]
);

呼び出し確認

MonkeyPatch::verifyInvokedMultipleTimes('Class::method', 3);