Laravel包开发中Pest测试时.env.testing文件读取失败排查
解决.env.testing变量无法读取的问题
- 手动加载测试环境变量文件
Spatie Package Skeleton的测试启动流程不会自动加载.env.testing,需要在测试入口文件里手动添加加载逻辑。打开tests/Pest.php(如果用的是基础测试类则打开tests/TestCase.php),在文件头部加入以下代码:
use Illuminate\Support\Facades\Dotenv; if (file_exists(__DIR__.'/../.env.testing')) { Dotenv::load(__DIR__.'/../', '.env.testing'); }
- 清除测试环境的配置缓存
如果之前生成过测试环境的配置缓存,会导致env()函数无法读取最新的.env变量,执行以下命令清除缓存:
php artisan config:clear --env=testing
- 规范env()函数的使用
Laravel中,一旦生成配置缓存,env()函数仅能在配置文件中生效,其他业务代码里调用会返回null。如果你的包是在配置文件中引用env变量,要确保配置文件被正确加载,且测试环境未启用配置缓存。
内容的提问来源于stack exchange,提问作者JanBoehmer
相关产品推荐
相关产品推荐

