Laravel中断言响应对象包含指定成功消息的最简单方法是什么
Laravel 测试体系内置了更简便的assertSessionHas断言方法,不需要手动获取 Session 实例再做等值判断,直接通过响应实例调用该方法即可完成校验。
你只需要把原来的$this->assertEquals(...)那行替换为:
$response->assertSessionHas('success', 'All objects have been updated.');
该方法会自动判断 Session 中是否存在对应键名,且键值是否和传入的预期值完全匹配,和你原来的手动校验逻辑完全等价,写法更简洁。
如果你的项目中需要频繁校验 Session 中的成功/错误提示,还可以在基础测试类TestCase中封装自定义断言,进一步简化写法:
// 在 tests/TestCase.php 中添加自定义方法 public function assertSessionHasSuccess(string $expectedMessage): void { $this->assertSessionHas('success', $expectedMessage); }
封装后你的测试代码可以简化为:
public function test_user_can_update() { $response = $this->put(route('my.route'), [ 'value' => 15 ]); $response->assertStatus(302); $response->assertSessionHasNoErrors(); $response->assertSessionHasSuccess('All objects have been updated.'); }
内容的提问来源于stack exchange,提问作者Thariama
相关产品推荐
相关产品推荐

