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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:40:21