如何阻止PHPUnit为捕获的异常发出堆栈跟踪?

时间:2015-09-15 20:35:11

标签: php laravel-5 phpunit

我正在使用Laravel开发一个应用程序,我遇到了单元测试的问题。由于没有明显的原因,PHPUnit正在为捕获的例外发出堆栈跟踪。

public function testIndexMethodUnauthenticated(){
    $user = factory(App\User::class)->create();
    $response = $this->get('api/v1/users');
    $this->assertResponseStatus(400);
}

这项测试'非常成功'。该调用命中API,无法验证用户身份,并发出JWT异常。然后在App\Exceptions\Handler.php中捕获该异常,该异常使用400状态代码呈现错误的适当JSON表示。

一切都好,对吗?不。虽然已经捕获并处理了异常,但PHP单元会为该错误发出堆栈跟踪。我假设它(以某种方式?)创建一个捕获所有异常的事件处理程序,这很棒,但是我如何抑制这样创建的输出?

另一个问题提出了类似$this->setExpectedException()的问题,但这只会导致测试失败。

就其本身而言,这一个发出堆栈跟踪的测试不是一个大问题。但随着我扩大测试次数,这将(迅速)成为一个严重的问题。

1 个答案:

答案 0 :(得分:1)

昨晚我找到了答案(已故)。 PHPUnit不会捕获,记录或其他任何异常。堆栈跟踪实际上来自Laravel的日志记录机制。我已将其配置为在Heroku上正常工作,并输出到STDOUT而不是日志文件。我改为使用环境变量,默认使用日志文件,但在Heroku上使用正确的STDOUT。

编辑:

更好的是,看几行并看到有一系列例外情况未被报告。只需添加'处理'它的异常类型,根据需要更新,以及weeee!