尝试为需要Zend_Config对象类型的方法执行Zend_Config的简单模拟,但mock返回一种Mock_Zend_Config。
当然,我在这么晚的时候错过了一些东西,而且我在功能调用中显然是错的,但我没有发现我的错误。
$config = $this->getMock("Zend_Config");
返回Mock_Zend_Config,我的对象需要是Zend_Config类型。在备忘单中查找函数签名并将方法调用更改为:
$config = $this->getMock("Zend_Config", array(), array($confArray),"Zend_Config",true);
此版本生成致命错误消息“Zend_Config已存在”。
在旁注上,可能与phpunit没有关系,但是typehint不会产生致命的错误,并且在没有测试的情况下运行。
知道我在la mock中缺少什么吗?
答案 0 :(得分:4)
模拟对象扩展了模拟对象。任何扩展Zend_Config
的类都会满足Zend_Config
的类型提示,因为根据定义,Mock_Zend_Config
扩展 Zend_Config
,因此是 Zend_Config
。因此,当您尝试将模拟命名为它所扩展的类时,您将收到致命错误,如果您不这样做则不会。