Возможно ли, используя макет PHPUnit объекты, чтобы ожидать вызова магического метода __call ()?

У меня есть фиктивный объект в тесте. Реальный объект PageRepository реализует волшебный метод с использованием __call (), поэтому, если вы вызываете $ pageRepository-> findOneByXXXX ($ value_of_field_XXXX), он будет искать в базе данных записи, соответствующие этому параметру.

Есть ли способ имитировать этот метод?

Реальный вызов метода будет выглядеть примерно так:

$homepage = $pageRepository->findOneBySlug('homepage');

Тест будет выглядеть так:

$mockPageRepository->expects($this->any())
    ->method('findOneBySlug')
    ->will($this->returnValue(new Page()));

Но он не работает - PHPUnit не работает определить вызов метода. Единственный способ заставить его увидеть метод - это явно определить метод в PageRepository.

29
задан j0k 5 August 2012 в 09:10
поделиться