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

Laravel Sail测试报错:Target Class RestApiController不存在

Laravel Sail测试问题解决:控制器不存在与数据库连接错误

问题1:Target Class RestApiController不存在

可能原因与解决步骤

  • 路由写法不符合Laravel 8+规范:Laravel 8及以后默认移除了路由的默认命名空间,直接使用字符串类名可能无法解析。修改路由为类引用写法:
    use App\Http\Controllers\RestApiController;
    
    Route::middleware(['check.team.role'])->group(function () {
        // ...
        Route::get('/api/v1/folder/{folder}', [RestApiController::class, 'getFolderById']);
        // ...
    });
    
  • 路由缓存导致旧配置残留:在Sail容器内执行命令清除路由缓存:
    ./vendor/bin/sail artisan route:clear
    
  • RouteServiceProvider命名空间未配置:打开app/Providers/RouteServiceProvider.php,取消$namespace属性的注释并设置为'App\Http\Controllers',这样路由中可以省略完整命名空间:
    protected $namespace = 'App\Http\Controllers';
    

问题2:替换TestCase后出现Call to a member function connection() on null

原因与解决办法

  • 不能替换Laravel封装的TestCase:PHPUnit\Framework\TestCase是原生PHPUnit测试类,不会初始化Laravel应用容器、数据库连接等环境。必须恢复使用Laravel提供的测试基类:
    use Tests\TestCase;
    use Illuminate\Foundation\Testing\RefreshDatabase;
    
    class RestApiOtherTest extends TestCase
    {
        use RefreshDatabase;
    
        // 你的测试方法
    }
    
  • 检查测试环境数据库配置:确认.env.testing中的数据库配置正确,Sail环境下通常设置DB_HOST=mysql,确保测试数据库服务正常运行。

内容的提问来源于stack exchange,提问作者Дмитрий Сиротин

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 14:32:02