【问题标题】:Exceptions in PHPunit doesn't workPHPunit 中的异常不起作用
【发布时间】:2013-07-27 17:30:43
【问题描述】:

我想测试一个方法是否引发异常。方法是这样的:

public function divide($a,$b)
{       
    try
    {
        if($b==0){
        throw new Exception('Divided by zero');
      }else{
        return $a/$b;       
      }
     }
     catch(exception $e)
     {
       return $e;
     }
}

这是测试:

/**
* @expectedException Exception
*/
public function testException()
{
   //throw new Exception('Hello world');
   $this->calculator->divide(10,0));
}

如果我在浏览器中检查代码,则会正确引发异常。但是当我运行测试时,我总是收到“断言抛出异常类型的异常失败”消息。但是,如果我在测试方法中抛出异常(取消注释 throw 行),测试工作正常。

有什么线索吗?

我在 windows XP 上使用 phpunit 3.7、xampp 3.1。

【问题讨论】:

  • 您在方法中捕获了异常,因此它不会冒泡。

标签: php exception phpunit


【解决方案1】:

因为Exception 被捕获在函数内部。你不要让它冒出来。所以测试不会断言它。

public function divide($a, $b)
{
    if ($b == 0) {
        throw new Exception('Divided by zero');
    } else {
        return $a / $b;
    }
}

【讨论】:

  • 你是对的。我验证了异常是否在 try/catch 块内启动,它不会被 phpunit 捕获,所以我认为我无法测试处理的异常。谢谢!
  • @JorgeHernandez:如果这个问题解决了你的问题,请考虑通过点击问题分数下方的绿色大勾号 (✔) 来接受它。
  • 过去,我无法让 PHPUnit 捕获默认异常,但会报告用户定义的异常。 IE:expectedException Exception 不起作用,但 expectedException MyException 会。
猜你喜欢
  • 2021-04-16
  • 1970-01-01
  • 2016-01-24
  • 2021-04-08
  • 2017-04-05
  • 2017-05-16
  • 2013-01-12
  • 2013-02-16
  • 2015-12-21
相关资源
最近更新 更多