2016-11-17 122 views
1
我在與HHVM上的PHPUnit 27年8月4日未能一類具有以下消息PHP所在單位getmock()的一個問題

PHP單位致命錯誤:調用未定義的方法PHPUnit_Framework_MockObject_InvocationMocker

Fatal error: Call to undefined method PHPUnit_Framework_MockObject_InvocationMocker::getTableColumns() in /joomla-cms/libraries/joomla/table/table.php on line 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(); 

and type cast the mockDatabase object to array我得到上面列出的致命錯誤。

$mockTableExtension = $this->getMock('JTableExtension', array('find', 'load'), (array) $mockDatabase); 

特拉維斯測試與投射到陣列的mockDatabase對象和對象類型var_dumped https://travis-ci.org/photodude/joomla-cms/jobs/172201634#L1427-L2178

一切的推移和工作在PHP就好了,這個問題是特定於HHVM 測試我做得不對的模擬設置?還是有其他的事情呢?

注意:我最近在php單元5.6上測試了這部分測試套件,並得到了同樣的問題。所以我不確定我們在設置這些測試方面沒有錯。

回答

0

我發現在hhvm的其中一項測試中發現了array($this->getMockDatabase())問題。用array(self::$driver)代替array($this->getMockDatabase())所有問題都已解決。

我也更換了直接使用getMockgetMockBuilder(爲了兼容phpunit 5.6)

相關問題