我想模拟一个接口的validate
方法,并让所有其他接口方法存根返回null(我真的不关心它们会发生什么),但似乎没有这样做很容易。
这就是我所拥有的:
$validator = $this
->getMockBuilder('Symfony\Component\Validator\Validator\ValidatorInterface')
->setMethods(array('validate'))
->getMock();
$validator
->expects($this->once())
->method('validate')
->willReturn(array());
$validator->validate();
运行这个给我一个致命的错误:
类Mock_ValidatorInterface_56c4c003包含6个抽象方法和 因此必须宣布抽象或实施其余方法
所以 - 我需要以某种方式告诉PHPUnit存根接口所需的其他方法。什么是正确的方法?
答案 0 :(得分:6)
在->setMethods()
中声明所有界面的方法。
通常,您模拟一个类并仅在->setMethods()
中声明某些方法。未经模拟的方法可以追溯到被模拟的原始类的实现。
但是如果你在模拟一个接口,那么所有方法都必须由mock实现。