Не удалось ожидать PHPUnit для имени метода PHPUnit 7.5.17 - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь смоделировать этот класс:

<?php

declare(strict_types=1);

namespace App\Domain\Query\Attribute;

use App\Domain\Model\Attribute;

interface FindAttributeByLabelAndTypeQueryInterface
{
    public function get(string $label, string $type): ?Attribute;

    public function getOrFail(string $label, string $type): Attribute;
}

С этим кодом я получаю ошибку:

/**
 * @return MockObject|FindAttributeByLabelAndTypeQueryInterface
 */
private function getAttributeFinder(): MockObject
{
    $attributeFinder = $this->createMock(FindAttributeByLabelAndTypeQueryInterface::class);
    $attributeFinder
        ->expects($this->at(0))
        ->method('getOrFail')
        ->with(PersonFieldFramework::NAME, PersonFieldFramework::TYPE)
        ->willReturn(AttributeLoader::loadAttribute(PersonFieldFramework::NAME, PersonFieldFramework::TYPE));
    $attributeFinder
        ->expects($this->at(1))
        ->method('getOrFail')
        ->with(PersonFieldWebTechnology::NAME, PersonFieldWebTechnology::TYPE)
        ->willReturn(AttributeLoader::loadAttribute(PersonFieldWebTechnology::NAME, PersonFieldWebTechnology::TYPE));
    return $attributeFinder;
}

Произошел 1 сбой: 1) App \ Tests\ Infrastructure \ Pipedrive \ Import \ Chunk \ TechnicalLevelChunksTest :: testIfAllFieldsAreImportedExceptOneInvalidAndOneEmpty Ожидание не выполнено для имени метода, равного 'getOrFail' при вызове по индексу последовательности 1. Смежный метод не существует.

Будет работатьесли я уберу методы "with" и "willReturn":

/**
 * @return MockObject|FindAttributeByLabelAndTypeQueryInterface
 */
private function getAttributeFinder(): MockObject
{
    $attributeFinder = $this->createMock(FindAttributeByLabelAndTypeQueryInterface::class);
    $attributeFinder
        ->expects($this->at(0))
        ->method('getOrFail');
    $attributeFinder
        ->expects($this->at(1))
        ->method('getOrFail');
    return $attributeFinder;
}

Это странно для меня, в чем проблема?

...