Php 为什么模拟对象有错误的类型提示?
尝试对需要Zend_Config对象类型的方法执行Zend_Config的简单模拟,但该模拟返回的是mock_Zend_Config类型 当然,我在这么晚的时候错过了一些东西,我在函数调用中显然是错的,但是我没有发现我的错误Php 为什么模拟对象有错误的类型提示?,php,zend-framework,phpunit,Php,Zend Framework,Phpunit,尝试对需要Zend_Config对象类型的方法执行Zend_Config的简单模拟,但该模拟返回的是mock_Zend_Config类型 当然,我在这么晚的时候错过了一些东西,我在函数调用中显然是错的,但是我没有发现我的错误 $config = $this->getMock("Zend_Config"); 返回Mock_Zend_Config,并且我的对象必须是Zend_Config类型。在备忘单中查找函数签名,并将方法调用更改为: $config = $this->getMoc
$config = $this->getMock("Zend_Config");
返回Mock_Zend_Config,并且我的对象必须是Zend_Config类型。在备忘单中查找函数签名,并将方法调用更改为:
$config = $this->getMock("Zend_Config", array(), array($confArray),"Zend_Config",true);
此版本生成一个致命错误,消息为“Zend_配置已存在”
在旁注上,可能与phpunit本身无关,但是typehint不会像它应该的那样生成致命错误,并且在没有测试的情况下运行时会生成致命错误
知道我在la mock中遗漏了什么吗?mock对象扩展了mock对象。任何扩展
Zend\u Config
的类都将满足Zend\u Config
的类型提示,因为根据定义,模拟Zend\u Config扩展了Zend\u Config
,因此是一个Zend\u Config
。因此,当您尝试将模拟命名为它扩展的类时,将出现一个致命错误,如果您不这样做,则不会出现任何错误。模拟对象扩展模拟对象。任何扩展Zend\u Config
的类都将满足Zend\u Config
的类型提示,因为根据定义,模拟Zend\u Config扩展了Zend\u Config
,因此是一个Zend\u Config
。因此,当您尝试将mock命名为它扩展的类时,会出现致命错误,如果您不这样做,则不会出现错误。只需加载项:如果您需要特定的类名,请使用类似“My_Mocked_Zend_Config”的名称。还要查看$this->getMockBuilder()->。。。该API比->getMock()只是插件要好得多:如果需要特定的类名,请使用类似“My_Mocked_Zend_Config”的名称。还要查看$this->getMockBuilder()->。。。API比->getMock()好得多