看不到响应获取请求 laravel phpunit

Posted

技术标签:

【中文标题】看不到响应获取请求 laravel phpunit【英文标题】:Cannot see response get request laravel phpunit 【发布时间】:2018-07-08 10:20:22 【问题描述】:

请原谅这可能是重复的,但我不确定如何实现以下目标。我正在使用 phpunit 对 laravel 中的路由进行一些测试,但我无法收到有关路由失败原因的任何调试信息。

这是我要测试的代码,它只是调用了一些命名路由:

foreach($companyNames as $companyName)
    $response = $this->call('GET', Config::get('app.url') . '/provider/' . $companyName);
    $response->assertStatus(200);
  

当 assertStatus 失败时我得到的响应是:

1) 测试\Unit\ProviderPageRouteTest::testProviderPageRoutes

预期的状态代码为 200,但收到的是 404。

断言 false 为 true 失败。

但我现在想看看究竟是哪条路线失败了,所以我可以调查失败路线的原因。我如何从响应或请求中接收此信息?

【问题讨论】:

【参考方案1】:

在断言之前,ddlog 如下:

$response->exception->getStackTrace();

您也可以访问给定类的任何其他异常消息。

【讨论】:

使用此代码,我收到以下错误消息:错误:在 null 上调用成员函数 getStackTrace() 是的,因为 Laravel 正在将 404 转换为异常处理程序中的响应。在 ExceptionHandler.php 中添加一行以在此函数的顶部打印异常public function report(Exception $exception): void

以上是关于看不到响应获取请求 laravel phpunit的主要内容,如果未能解决你的问题,请参考以下文章

带有 JSON 请求的 Laravel/phpunit 测试丢失了重要的请求细节

Laravel 5.2 PHPUnit JSON Api 请求正文未设置

处理来自 PHPUnit (Laravel 5.2) 的自定义异常

如何获取 assertResponseOk 的状态 - laravel 4.2 测试

phpunit Guzzle 异步请求

Laravel 路由仅在 phpunit 测试期间返回 302 而不是 404 响应