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

Laravel功能测试报错:实际数量0与预期数量4不匹配

Laravel 功能测试返回数据计数为0的问题解决

问题根源

  • 模型未持久化到数据库:你使用了Ticket::factory()->count(5)->make(),这个方法仅创建模型实例,不会将数据保存到数据库。数据库中没有任何Ticket记录,后续查询自然返回空数组,导致计数为0。
  • 更新记录的方式不可靠:即便改成create(),直接通过where('id',5)更新记录也存在风险——Factory生成的id不一定是连续的硬编码值,硬写id=5容易出现匹配不到记录的情况。

修正后的测试代码

class FilterTicketsTest extends TestCase
{
    use RefreshDatabase;

    public function test_ticket_status_filtering(): void
    {
        // 创建并保存5条记录到数据库
        $tickets = Ticket::factory()->count(5)->create();

        // 将最后一条记录的processed设为false
        $tickets->last()->update(['processed' => false]);

        $response = $this->get('/tickets?greater_or_equal=processed,1');

        $response->assertStatus(200);
        $response->assertJsonIsArray('data');

        $this->assertCount(4, $response['data']);
    }
}

补充说明

如果processed是布尔类型字段,查询参数中的1会被解析为true,过滤后将返回4条processed=true的记录,与预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:39:51