【发布时间】:2017-04-01 16:31:32
【问题描述】:
我在 hhvm 上的 php 单元遇到问题,其中 getmock() 在 phpunit 4.8.27 上失败,并显示以下消息
致命错误:在第 241 行调用 /joomla-cms/libraries/joomla/table/table.php 中未定义的方法 PHPUnit_Framework_MockObject_InvocationMocker::getTableColumns()
测试代码失败位于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 unit 5.6 上测试了这部分测试套件并遇到了同样的问题。所以我不确定我们在设置这些测试时没有做错什么。
【问题讨论】:
标签: php unit-testing joomla phpunit hhvm