我正在使用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()
的问题,但这只会导致测试失败。
就其本身而言,这一个发出堆栈跟踪的测试不是一个大问题。但随着我扩大测试次数,这将(迅速)成为一个严重的问题。
答案 0 :(得分:1)
昨晚我找到了答案(已故)。 PHPUnit不会捕获,记录或其他任何异常。堆栈跟踪实际上来自Laravel的日志记录机制。我已将其配置为在Heroku上正常工作,并输出到STDOUT而不是日志文件。我改为使用环境变量,默认使用日志文件,但在Heroku上使用正确的STDOUT。
编辑:
更好的是,看几行并看到有一系列例外情况未被报告。只需添加'处理'它的异常类型,根据需要更新,以及weeee!