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

Laravel Fluent JSON测试如何断言返回数组中多个指定ID值

解决方案

你可以选择以下两种写法实现需求,两种写法都不需要关心返回体里除了id之外的其他属性:

方案1:使用whereAllIn快速断言(推荐)

直接一次性断言data数组长度为2,且所有元素的id刚好是你指定的两个目标值:

->assertJson(
    fn (AssertableJson $json) =>
    $json->has('data', 2)
         ->whereAllIn('data.*.id', [$group1->id, $group2->id])
         ->etc()
);

方案2:使用contains明确匹配两个元素

如果你需要更清晰的分别断言两个id都存在,可以用contains方法逐个匹配:

->assertJson(
    fn (AssertableJson $json) =>
    $json->has('data', 2)
         ->contains('data', fn (AssertableJson $item) => $item->where('id', $group1->id)->etc())
         ->contains('data', fn (AssertableJson $item) => $item->where('id', $group2->id)->etc())
         ->etc()
);

补充说明

你之前的写法存在逻辑问题:has方法传入的第三个回调是对data数组每一项的统一校验规则,按照你之前的写法,会要求返回的两个group的id都等于$group2->id,不符合实际需求,建议调整为上面的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:45:04