如何解决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 举报,一经查实,本站将立刻删除。