我想模拟一个接口的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存根接口所需的其他方法。做这件事的正确方法是什么?
在->setMethods()
中声明接口的所有方法。
通常,您模拟一个类,并且只在->setMethods()
中声明某些方法。未被嘲笑的方法返回到被嘲笑的原始类上的实现。
但是,如果您正在模拟一个接口,那么所有方法都必须由mock实现。