Не получается результат в виде массива для фиктивного объекта PHPUnit - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь запустить модульный тест, используя функции PHPUnit и Mock. Я ожидаю массив в результате. Но всегда получаю объект, и это не связано с функцией, которую я вызвал. Как я могу сделать эту работу?

Даю код ниже

public function testGet()
{
    $mock = $this->createMock(Category::class);

    $map = [
        [1, 2],
        [3, 4],
    ];

    $mock->method('get')
        ->willReturn($this->returnValueMap($map));

    $testVal = $mock->get(1);
    echo '<pre>';
    print_r($testVal);
    die;
}

Результат, который я получаю из печати,

PHPUnit\Framework\MockObject\Stub\ReturnValueMap Object
(
    [valueMap:PHPUnit\Framework\MockObject\Stub\ReturnValueMap:private] => Array
        (
            [0] => Array
                (
                    [0] => 1
                    [1] => 2
                )</p>

<pre><code>        [1] => Array
            (
                [0] => 3
                [1] => 4
            )

    )
)
</code>

Я ожидаю получить 2, если передам 1 функции, и ожидаю получить 4, если передам 3 функции.

Функция, которую я хочу проверить:

public function get(int $id) { $categoryData = new CategoryData(); $fields = ['name', 'gid']; $getCat = $categoryData->get($id, $fields); if ($getCat) { return $getCat; } return []; }

Я что-то здесь упускаю? Пожалуйста, помогите

1 Ответ

1 голос
/ 04 июня 2019

Пожалуйста, попробуйте ->will( вместо ->willReturn(, так что Phpunit не возвращает объект карты (willReturn возвращает аргумент дословно), но далее обрабатывает его.

Ссылка:

...