Laravel 11修改User模型路径后测试仍报错:Class "App\User"未找到
解决Laravel 11迁移User模型后PHPUnit测试报"Class 'App\User' not found"的问题
遇到这种情况,大概率是缓存或自动加载映射未更新导致的,按以下步骤逐一排查:
清除PHPUnit内部缓存
PHPUnit会缓存类映射信息,即便已修改测试文件的引用路径,旧缓存仍可能生效。执行命令清除:./vendor/bin/phpunit --clear-cache也可手动删除项目根目录下的
.phpunit.cache文件夹(若存在)。更新Composer自动加载规则
模型路径变更后,需重新生成Composer的自动加载映射,确保新路径的User模型能被正确识别:composer dump-autoload检查所有测试文件的类引用
确认Breeze生成的所有测试文件(如tests/Feature/Auth/LoginTest.php、RegisterTest.php等)中,User类的use语句已替换为新路径:// 替换旧的 use App\User; use App\Infra\Models\User;注意不要遗漏任何测试文件,单个未更新的文件都会引发报错。
修正Laravel认证配置
打开config/auth.php,找到providers.users.model配置项,将其值改为新的模型类:'model' => App\Infra\Models\User::class,Breeze的多数测试依赖Laravel认证系统,若此处未更新,测试时会尝试加载旧路径的User类。
清除Laravel应用缓存
最后清除Laravel的配置、路由等缓存,避免旧配置残留:php artisan cache:clear php artisan config:clear php artisan route:clear
完成以上步骤后,重新运行php artisan test即可解决问题。
内容的提问来源于stack exchange,提问作者Tommy Hoang
相关产品推荐
相关产品推荐

