【问题标题】:PHP Unit Fatal error: Call to undefined method PHPUnit_Framework_MockObject_InvocationMockerPHP 单元致命错误:调用未定义的方法 PHPUnit_Framework_MockObject_InvocationMocker
【发布时间】: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


    【解决方案1】:

    我在 hhvm 的一项测试中发现 array($this->getMockDatabase()) 存在一些问题。将array($this->getMockDatabase()) 替换为array(self::$driver),所有问题均已解决。

    我还将getMock的直接使用替换为getMockBuilder(为了与phpunit 5.6兼容)

    【讨论】:

      猜你喜欢
      • 2015-05-13
      • 1970-01-01
      • 2013-06-02
      • 2011-07-17
      • 2015-04-15
      • 1970-01-01
      • 1970-01-01
      • 2018-04-04
      • 2011-04-15
      相关资源
      最近更新 更多