Я пытаюсь смоделировать этот класс:
<?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;
}
Это странно для меня, в чем проблема?