微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHPUnit,Selenium基本测试因致命错误而失败

我正在从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

$这 – &GT失败($其他,$描述)

其定义为:

保护功能失效($其他,$描述,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 举报,一经查实,本站将立刻删除。

相关推荐