Неопределенный метод на фиктивном объекте, реализующий данный интерфейс в PHPUnit?
Я новичок в модульном тестировании и PHPUnit.
Мне нужен макет, на котором я имею полный контроль, реализуяConfigurationInterface
интерфейс. ИспытуемыйReportEventParamConverter
Объект и тест должны проверить взаимодействие между моим объектом и интерфейсом.
ReportEventParamConverter
объект (здесь упрощенно):
class ReportEventParamConverter implements ParamConverterInterface
{
/**
* @param Request $request
* @param ConfigurationInterface $configuration
*/
function apply(Request $request, ConfigurationInterface $configuration)
{
$request->attributes->set($configuration->getName(), $reportEvent);
}
/**
* @param ConfigurationInterface $configuration
* @return bool
*/
function supports(ConfigurationInterface $configuration)
{
return 'My\Namespaced\Class' === $configuration->getClass();
}
}
И вот как я пытаюсь смоделировать интерфейс:
$cls = 'Sensio\Bundle\FrameworkExtraBundle\Configuration\ConfigurationInterface';
$mock = $this->getMock($mockCls);
Мне нужно смоделировать возвращаемые значения для двух методов:getClass()
а такжеgetName()
, Например:
$mock->expects($this->any())
->method('getClass')
->will($this->returnValue('Some\Other\Class'))
;
Когда я создаю новыйReportEventParamConverter
и проверитьsupports()
метод, я получаю следующую ошибку PHPUnit:
Fatal error: Call to undefined method Mock_ConfigurationInterface_21e9dccf::getClass().
$converter = new ReportEventParamConverter();
$this->assertFalse($converter->supports($mock));