我在hhvm上的php单元中遇到了一个问题,在phpunit 4.8.27上get运动会()失败了,因为有以下消息的类
致命错误:对/joomla-cms/库/joomla/table/table.php中的未定义方法PHPUnit_Framework_MockObject_InvocationMocker::getTableColumns()的在线调用241
测试代码失败位于https://github.com/photodude/joomla-cms/blob/patch-1/tests/unit/suites/libraries/cms/installer/JInstallerAdapterTest.php#L111,用于测试代码--这个“失败/错误”测试没有致命错误。
$mockTableExtension = $this->getMock('JTableExtension', array('find', 'load'), array($this->getMockDatabase()));
但是如果我使用存储的值
$mockDatabase = $this->getMockDatabase();
并将mockDatabase
对象强制转换为数组,我将得到上面列出的致命错误。
$mockTableExtension = $this->getMock('JTableExtension', array('find', 'load'), (array) $mockDatabase);
使用mockDatabase
对象和对象类型强制转换为数组var_dumped https://travis-ci.org/photodude/joomla-cms/jobs/172201634#L1427-L2178的Travis测试
在php中,一切都通过并正常工作,这个问题是针对hhvm上的测试的--我在模拟设置中做错了什么吗?还是还有别的事发生?
注意:我最近在php单元5.6上测试了这部分测试套装,并得到了同样的问题。所以我不确定我们在这些测试的设置中有什么不对。
发布于 2016-11-26 19:16:23
我发现在hhvm上的一个测试中,array($this->getMockDatabase())
存在一些问题。将array($this->getMockDatabase())
替换为array(self::$driver)
,所有问题都得到了解决。
我还将直接使用getMock
替换为getMockBuilder
(为了与phpunit 5.6兼容)
https://stackoverflow.com/questions/40666644
复制相似问题