2016-11-17 8 views
1
私は、次のメッセージを持つクラスのためのPHPUnit 4.8.27に失敗hhvm上の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(); 

とタイプキャストmockDatabaseオブジェクトを配列上記の致命的なエラーが表示されます。

$mockTableExtension = $this->getMock('JTableExtension', array('find', 'load'), (array) $mockDatabase); 
配列にキャスト mockDatabaseオブジェクトおよびオブジェクトタイプと

トラヴィス・テストは

すべてが通過して、PHPでうまく動作しますhttps://travis-ci.org/photodude/joomla-cms/jobs/172201634#L1427-L2178が、問題は私が何か間違ったことをやっているhhvm でのテストに固有のものですvar_dumpedモックセットアップ?何か他のことが起こっていますか?

注:私は最近、このテストスーツの部分をPHP 5.6でテストし、同じ問題が発生しました。だから私は、これらのテストのセットアップで間違っていないものは何か分からない。

答えて

0

hhvmのテストの1つにarray($this->getMockDatabase())という問題があります。 array($this->getMockDatabase())array(self::$driver)に置き換えると、すべての問題が解決されました。

Iはまた、(PHPUnitの5.6との互換性のため)getMockBuildergetMockを直接使用

を置き換え
関連する問題