尝试对需要Zend_Config对象类型的方法进行简单的Zend_Config模拟,但模拟返回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 中缺少什么吗?
模拟对象扩展模拟对象。任何类扩展Zend_Config
都将满足Zend_Config
的类型提示,因为根据定义,Mock_Zend_Config
扩展Zend_Config
因此是一个Zend_Config
。因此,当您尝试命名模拟时,例如它扩展的类,您将收到致命错误,如果不命名,则不会。