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

PHPUnit 9 支持使用expectException() 和PHPUnit\Framework\Error\Error 已弃用

如何解决PHPUnit 9 支持使用expectException() 和PHPUnit\Framework\Error\Error 已弃用

我正在将 PHPunit 从 7.5 更新到 9.5,但遇到警告消息:

Support for using expectException() with PHPUnit\Framework\Error\Error is deprecated and will be removed in PHPUnit 10. Use expectError() instead.

使用以下示例测试:

public function testFooErrorsOnBlankBar()
   {
        $this->expectException('invalidargumentexception');
        My\Class::foo('','123');
   }

其中 foo一个必需的参数 bar

可以将此测试更新为expectErrorMessage,但随后我断言了消息(类似于expected bar to be set)而不是错误类型,我认为作为开发人员更容易阅读。

我可能在 phpunit's docs 中遗漏了一些简单的内容,但总的来说我是 PHP 文档的新手。任何帮助将不胜感激!

解决方法

https://thephp.cc/news/2020/02/migrating-to-phpunit-9

根据我的发现,expectException() 应该可以捕获所有不同类型的错误,即弃用、通知、警告和错误。因此维护者决定为每种类型使用单独的方法,即 expectDeprecation()expectNotice()expectWarning()expectError()

在我看来,维护者一开始并不打算 expectException() 指定错误的类型,他们只想知道它是被弃用还是通知或警告或错误,我部分同意。在大多数情况下无法捕获足够的错误,除非您的代码可以抛出不同类型的错误,并且您希望确保它抛出正确类型的错误。

对于您的代码,expectError() 应该足够了。

public function testFooErrorsOnBlankBar()
{
    $this->expectError();
    My\Class::foo('','123');
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。