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

Laravel5.6测试/home端点预期200却返回302测试失败如何解决

故障原因

302状态码为临时重定向标识,此次报错核心原因是Laravel默认生成的/home路由挂载了auth身份校验中间件,未登录状态下访问会自动重定向至登录页面,因此返回302而非预期的200状态码。

修复方案
  • 方案一:测试流程中模拟登录已授权用户
    Laravel测试套件内置用户身份模拟方法,修改UserTest.php代码如下即可:
    <?php
    
    namespace Tests\Feature;
    
    use Tests\TestCase;
    use App\User;
    
    class UserTest extends TestCase
    {
        public function testExample()
        {
            // 快速创建测试用户并模拟登录
            $user = factory(User::class)->create();
            $response = $this->actingAs($user)->get('/home');
            $response->assertStatus(200);
        }
    }
    
  • 方案二:移除/home路由的登录校验限制
    如果业务层面/home不需要登录即可访问,打开routes/web.php,找到对应路由定义,删除auth中间件挂载即可:
    // 原代码
    Route::get('/home', 'HomeController@index')->name('home')->middleware('auth');
    // 修改后
    Route::get('/home', 'HomeController@index')->name('home');
    
额外配置优化

当前phpunit.xml中配置的APP_ENV值为local,优先级高于环境配置文件,会导致.env.testing无法生效,建议将对应行修改为<env name="APP_ENV" value="testing"/>,实现测试环境与开发环境配置隔离,避免后续出现配置冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:09:02