我正在从Github运行PHP 5.3.6和最新版本的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
当我将断言更改为pass时,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,而不是对象.我做错了什么?
更新:
我找到了失败的原因,虽然我的视野尚未解决.
在PHPUnit / Framework / Constraint.PHP的第92行,它调用using
$这 – >失败($其他,$描述)
其定义为:
保护功能失效($其他,$描述,PHPUnit_Framework_ComparisonFailure $comparisonFailure = NULL)
由于没有传递PHPUnit_Framework_ComparisonFailure,因此在PHPUnit / Framework / Constraint.PHP的第141行传递NULL
throw new PHPUnit_Framework_ExpectationFailedException(
$failureDescription,
$comparisonFailure
);
这是由getComparisonFailure()提取的,它应该返回一个对象,如上所述.
还有什么想法吗?
解决方法:
只需替换$message = $e-> getComparisonFailure() – > toString(); with $message = $e-> getComparisonFailure() – > exceptionToString;
这对我来说可以
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。