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

需认证的Laravel测试在GitHub Actions中无法通过

Laravel认证用户访问Dashboard测试本地通过但GitHub Actions返回302解决方案

以下是几个排查和解决该问题的方向:

1. 确保CI环境完成数据库迁移

GitHub Actions运行的是全新环境,数据库为空,测试前必须执行迁移操作。在你的GitHub Actions workflow文件中,添加迁移步骤:

- name: 执行数据库迁移
  run: php artisan migrate:fresh --env=testing

2. 检查用户认证的Guard与邮箱验证状态

如果你的Dashboard路由要求用户验证邮箱,而工厂创建的用户默认未验证,就会触发重定向:

  • 修改User工厂,默认生成已验证用户:
// database/factories/UserFactory.php
return [
    // 其他字段配置
    'email_verified_at' => now(),
];

或者在测试中手动设置验证状态:

$user = User::factory()->create(['email_verified_at' => now()]);
$this->actingAs($user);

另外,可显式指定认证Guard避免歧义:

$this->actingAs(User::factory()->create(), 'web');

3. 排查测试环境的Session配置

确保config/session.php中测试环境的驱动为array(Laravel默认配置),避免因session存储问题导致认证状态丢失:

// config/session.php
'env' => [
    'testing' => [
        'driver' => 'array',
    ],
],

4. 定位重定向目标精准排查

在测试中添加重定向断言或dump响应,明确302的跳转方向:

$response = $this->get('/dashboard');
// 查看重定向地址
$response->assertRedirect('/email/verify'); 
// 或者直接dump响应内容
$response->dump();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 11:02:17