【问题标题】:PHPUnit if exception was thrown then .. elsePHPUnit 如果抛出异常然后 .. 否则
【发布时间】:2018-03-03 21:56:48
【问题描述】:

如果抛出异常,我想检查我的 PHPUnit 测试,如果是,测试应该是正确的,如果没有,其他代码:

if ($this->expectException(InvalidArgumentException::class))
{
    // Test correct

} else {

     ...
    $this->assertEquals($f1, $f2);
    // Test correct

}

我该如何处理?

【问题讨论】:

  • 你的测试做的太多了。将其拆分为两个单独的测试:一个期望抛出异常(并且在运行测试代码后无需检查它),另一个不期望异常。作为一般规则,如果您需要在测试中使用 ifswitch 语句,则意味着您必须将测试拆分为两个(或更多)较小的测试。

标签: php exception exception-handling phpunit


【解决方案1】:

你只是说:

$this->expectException(InvalidArgumentException::class);

然后调用引发异常的代码。如果在测试结束时没有抛出异常,它将失败。

【讨论】:

  • 如果有异常,是否不能检查测试,如果没有,测试应该执行其他代码吗?还是我应该在两个不同的测试中处理这个?
  • 是的,正如@axiac 所指出的,那么这应该是两个测试。
猜你喜欢
  • 2011-08-06
  • 1970-01-01
  • 2017-01-12
  • 2011-10-18
  • 1970-01-01
  • 2021-06-20
  • 2018-03-31
  • 2020-12-21
  • 1970-01-01
相关资源
最近更新 更多