É possível, usando objetos simulados PHPUnit, esperar uma chamada para um método mágico __call (
Eu tenho um objeto simulado em um teste. O objeto real, PageRepository, implementa um método mágico usando __call (); portanto, se você chamar $ pageRepository-> findOneByXXXX ($ value_of_field_XXXX), ele pesquisará no banco de dados os registros correspondentes a esse parâmetro.
Existe uma maneira de zombar desse métod
A chamada de método real ficaria assim:
$homepage = $pageRepository->findOneBySlug('homepage');
O teste ficaria assim:
$mockPageRepository->expects($this->any())
->method('findOneBySlug')
->will($this->returnValue(new Page()));
Mas isso não funciona - o PHPUnit não identifica a chamada de método. A única maneira de fazer com que ele veja o método é defini-lo explicitamente no PageRepository.