PHPUnit-测试是否未引发异常?
PHP7.4和PHPUnit 9 使用PHPUnit主页示例(): 主页还向我们展示了如何使用PHPUnit-测试是否未引发异常?,php,phpunit,Php,Phpunit,PHP7.4和PHPUnit 9 使用PHPUnit主页示例(): 主页还向我们展示了如何使用expectException()方法测试抛出的异常: public function testCannotBeCreatedFromInvalidEmailAddress(): void { $this->expectException(InvalidArgumentException::class); Email::fromString('invalid'); } 太好了。
expectException()
方法测试抛出的异常:
public function testCannotBeCreatedFromInvalidEmailAddress(): void
{
$this->expectException(InvalidArgumentException::class);
Email::fromString('invalid');
}
太好了。但是如果我想测试在给定有效输入的情况下抛出的异常是否为而不是,该怎么办
查看文档()似乎没有提到与expectException()
相反的方法
我应该如何处理这个问题
编辑以添加:
为了清楚起见,我正在测试
电子邮件::fromString('valid')。email@example.com');代码>场景,即未抛出异常。如果抛出未捕获或意外异常,测试将失败。您不必做任何特殊的事情,只需运行正在测试的代码。如果测试方法中没有其他断言,您还必须执行$this->expectnottoperformanceassertions()否则,您将收到一条警告,表明测试不执行任何断言
public function testCannotBeCreatedFromInvalidEmailAddress(): void
{
$this->expectNotToPerformAssertions();
Email::fromString('invalid'); // If this throws an exception, the test will fail.
}
也许我的问题不清楚(或者我误解了你的答案)。为了明确起见,我要测试的是Email::fromString('validemail@example.com)
?i、 我希望找到一个exceptionnot抛出()
方法(据我所知不存在)。你不需要像exceptionnot抛出()
这样的东西,因为这是默认行为。只要运行代码,如果没有引发异常,测试就会通过。test可以从validemailaddress创建。
方法测试快乐路径。如果抛出异常,则它不会通过。有鉴于此,您不必显式地检查异常。
public function testCannotBeCreatedFromInvalidEmailAddress(): void
{
$this->expectNotToPerformAssertions();
Email::fromString('invalid'); // If this throws an exception, the test will fail.
}