Laravel 11升级后Pest API测试持续返回404错误求助
Laravel 11 + Pest 测试返回404问题修复方案
问题根源
你把/login路由定义在了routes/api.php中,但Laravel默认会给api.php内的所有路由自动添加/api前缀,实际可访问的路由是/api/login,但测试里请求的是/login,所以返回404。
修复方法
方法一:修改测试请求路径
直接在测试代码中使用带API前缀的路由:
it('can access the login page', function () { $response = $this->get('/api/login'); $response->assertStatus(200); });
方法二:移除API路由默认前缀(可选)
如果不想保留/api前缀,可修改bootstrap/app.php的路由配置:
return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', api: __DIR__.'/../routes/api.php', apiPrefix: '', // 将默认前缀设为空 commands: __DIR__.'/../routes/console.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { // 保留原有中间件配置 }) ->withExceptions(function (Exceptions $exceptions) { // 保留原有异常配置 })->create();
修改后,测试里的/login请求就能直接匹配路由。
优化phpunit.xml配置(非必须但建议)
你的APP_URL配置存在路径冗余,建议改为项目根URL:
<env name="APP_URL" value="http://localhost/project/api/public" />
该配置不影响路由匹配,但会影响项目内绝对URL的生成。
验证修复
重新运行Pest测试:
./vendor/bin/pest
此时测试应返回200状态码并通过。
内容的提问来源于stack exchange,提问作者Sivabalan
相关产品推荐
相关产品推荐

