在Laravel的TestResponse中内置调试方法代码示例
Laravel  /  管理员 发布于 10个月前   315
仔细阅读 Laravel 的 HTTP 测试文档,你会发现在 TestResponse 类中内置了一些有用的辅助方法,
用于调试 HTTP 响应。
这个类最近在 Laravel 11 的 Dumpable Trait 中对这些方法进行了一些内部更新,
https://laravel-news.com/laravel-11-dumpable-trait
我想现在是重温这些有用的助手的好时机:
$response = $this->get('/');
$response->dump();
$response->dumpHeaders();
$response->dumpSession();
这些方法也有对应的 dd() 方法,可以 "死亡并转储 "响应值:
$response->dd();
$response->ddHeaders();
$response->ddSession();
这些方法都是很有用的捷径,而不是在测试中自己做:
dump($response->headers->all());
// or
dd($response->headers->all());
然而,当你修改一个在 TestResponse 实例上链上各种断言的现有测试时,
这些方法就会大显身手:
$this->postJson(route('post.store', $post))
->assertSessionHasNoErrors()
->assertCreated()
->assertJson(['created' => true]);
假设 assertSessionHasNoErrors() 失败了,我想进行调试。
我注意到,当我遇到一个不赋值响应的链时,
我会像这样将响应赋值给一个局部变量:
$response = $this->postJson(route('post.store', $post));
dd($response);
$response
->assertSessionHasNoErrors()
->assertCreated()
->assertJson(['created' => true]);
我不会争论你是否应该链式断言并永远不给局部变量赋值--这更像是一种风格偏好,
但你会遇到不给局部变量赋值的情况。
使用这些调试方法,我们可以在测试失败前快速调试:
$this->postJson(route('post.store', $post))
+ ->dumpSession()
->assertSessionHasNoErrors()
->assertCreated()
->assertJson(['created' => true]);
如果您想在各种断言之间的某个地方调试响应,而不需要在本地变量中抓取 TestResponse 实例,
那么这些调试助手将非常方便。
了解更多
这些特性(以及更多特性)在 HTTP 测试的 Laravel 文档中都有介绍,
https://laravel.com/docs/10.x/http-tests
还有其他有用的 TestResponse 特性,让 JSON 断言变得轻而易举。
123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..路人 在
php中使用hyperf框架调用讯飞星火大模型实现国内版chatgpt功能示例中评论 教程很详细,如果加个前端chatgpt对话页面就完美了..Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号