我在测试中有一个模拟对象。真正的对象 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 中显式定义该方法。