使用 PHPUnit 模拟对象,是否有可能期望调用一个神奇的 __call() 方法?
2022-08-30 13:40:28
我在测试中有一个模拟对象。真正的对象 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 中显式定义该方法。