我正在運行PHP 5.3.6和來自Github的PHPUnit的最新版本。當我從文檔複製示例17.1時,它在assertTitle失敗時會發生致命錯誤。我得到這個錯誤信息:PHPUnit,硒基本測試因致命錯誤而失敗
Fatal error: Call to a member function toString() on a non-object in <path>/phpunit/phpunit-selenium/PHPUnit/Extensions/SeleniumTestCase.php on line 1041
當我改變斷言通過,PHPUnit運行得很好。
我挖了線,這是片段:
protected function onNotSuccessfulTest(Exception $e)
{
if ($e instanceof PHPUnit_Framework_ExpectationFailedException) {
$buffer = 'Current URL: ' . $this->drivers[0]->getLocation() .
"\n";
$message = $e->getComparisonFailure()->toString();
$ E-> getComparisonFailure()返回NULL,而不是對象。我做錯了什麼?
UPDATE:
我找到了失敗的原因,雖然修復不在我的視野呢。
在PHPUnit的92線/框架/ Constraint.php,它調用使用
$this->fail($other,$description)
其被定義爲:
protected function fail($other, $description, PHPUnit_Framework_ComparisonFailure $comparisonFailure = NULL)
由於沒有PHPUnit_Framework_ComparisonFailure通過,NULL
是傳遞給PHPUnit/Framework/Constraint.php的第141行
拋出新PHPUnit_Framework_ExpectationFailedException( $ failureDescription, $ comparisonFailure );
它被getComparisonFailure()取回,它應該返回一個對象,如上所述。
還有什麼想法?
你說phpunit-selenium的默認複製粘貼示例有一個錯誤,當它的唯一斷言失敗時,複製和粘貼應該失敗? –