У меня есть макет объекта в тесте. Реальный объект, 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.