【发布时间】:2011-10-31 05:47:03
【问题描述】:
我正在运行 PHP 5.3.6 和来自 Github 的最新版本的 PHPUnit。当我从文档中复制示例 17.1 时,它会在 assertTitle 失败时遇到致命错误。我收到此错误消息:
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 运行良好。
我挖出了这条线,这是 sn-p :
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,而不是对象。我做错了什么?
更新:
我找到了失败的原因,尽管我还没有找到解决办法。
在PHPUnit/Framework/Constraint.php的第92行,它调用使用
$this->fail($other,$description)
定义为:
protected function fail($other, $description, PHPUnit_Framework_ComparisonFailure $comparisonFailure = NULL)
由于没有传递 PHPUnit_Framework_ComparisonFailure,所以在 PHPUnit/Framework/Constraint.php 的第 141 行传递了NULL
抛出新的 PHPUnit_Framework_ExpectationFailedException( $故障描述, $比较失败 );
由 getComparisonFailure() 获取,它应该返回一个对象,如上所述。
还有什么想法吗?
【问题讨论】:
-
您说的默认复制粘贴示例 phpunit-selenium 有一个错误,当其中唯一的断言失败时,复制和粘贴时应该失败?
标签: php selenium phpunit tostring