我正在运行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的默认复制粘贴示例有一个错误,当它的唯一断言失败时,复制和粘贴应该失败? –