我正在运行 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 运行得很好。
我挖出了该行,这是片段:
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/Framework/Constraint.php 的第 92 行,它调用 using
$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(
$失败描述,
$comparison失败
);
它是由 getComparisonFailure() 获取的,它应该返回一个对象,如上所述。
还有更多想法吗?