You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel8功能测试中TestResponse的original属性与assertViewHas方法疑问

问题1:$response->original属性的含义

Illuminate/Testing/TestResponse实例的original属性存储的是控制器/路由返回的原始未渲染的响应数据:

  • 你当前路由返回的是视图响应,此时original对应的就是视图对象,可以直接通过数组语法读取你绑定到视图的所有变量,你示例中的$response->original['tests']就是直接取到绑定给test.dashboard视图的tests变量值。
  • 如果是返回JSON接口的场景,original存储的就是你返回的数组/模型等原始数据,而非序列化后的JSON字符串。
// 对应你的示例代码
$response = $this->get(route('test.dashboard'));
$tests = $response->original['tests'];
问题2:assertViewHas方法的作用

assertViewHas不是用来校验响应HTML中包含"tests"文本的,它是专门针对视图响应的断言方法,作用是校验当前返回的视图是否绑定了指定名称的变量:

  • 你示例中的$response->assertViewHas('tests')仅校验视图有没有绑定名为tests的变量,只要变量存在,不管变量值是什么都会断言通过。
  • 如果需要同时校验变量的具体值,可以传入第二个参数:$response->assertViewHas('tests', $期望的变量值)
  • 如果你需要校验渲染后的HTML里包含指定文本,应该使用assertSee方法。
// 对应你的示例代码
$response = $this->get(route('test.dashboard'));
$response->assertViewHas('tests');

内容的提问来源于stack exchange,提问作者Arav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:48:03