Laravel 5单元测试中App::runningUnitTests()返回false问题排查
Laravel 5中App::runningUnitTests()返回false的原因及解决办法
以下是可能的原因和对应的解决步骤:
配置缓存未清除
如果之前运行过php artisan config:cache生成了配置缓存,Laravel会优先读取缓存的配置文件,phpunit.xml中设置的APP_ENV=testing不会生效。解决办法是在测试前执行:php artisan config:clearPHPUnit配置未正确加载
确保运行phpunit时使用了项目根目录下的phpunit.xml配置文件。如果运行命令时指定了其他配置文件,或者配置文件路径不对,会导致APP_ENV环境变量未被设置。可以显式指定配置文件运行:phpunit --configuration phpunit.xmlLaravel版本兼容问题
App::runningUnitTests()方法是Laravel 5.7才引入的。如果你的Laravel版本低于5.7,这个方法可能是自定义实现的,或者依赖的判断逻辑有问题。如果是自定义方法,检查其判断逻辑是否仅依赖APP_ENV=testing;如果是使用了第三方包提供的方法,确认包的版本与Laravel版本兼容。环境变量传递异常
某些情况下,PHPUnit的环境变量无法正确传递到Laravel应用中。可以在测试代码中先输出getenv('APP_ENV')确认是否为testing,如果不是,检查phpunit.xml的配置是否正确,比如是否将<env>标签放在<php>标签内:<php> <env name="APP_ENV" value="testing"/> <!-- 其他环境变量配置 --> </php>
内容的提问来源于stack exchange,提问作者Saani
相关产品推荐
相关产品推荐

