我的应用中有一些方法可以检查if (env('APP_DEBUG'))
并返回true
(或其他),如果我们处于调试模式而不是执行某个DB或API调用。
问题是当我运行phpunit时,应用程序仍处于调试模式,所以它并没有真正"针对实际代码运行测试。
是否可以检查是否正在运行测试,所以我可以if (env('APP_DEBUG') || $testing)
?或者有更好的方法来处理这种情况吗?
答案 0 :(得分:3)
您正在寻找App::runningUnitTests()
。
请记住,不应在配置文件之外使用env(),而应使用config('app.debug')
。这可确保您的代码使用缓存配置。
如果没有更多详细信息,就无法回答“有没有更好的方法”。
答案 1 :(得分:1)
您可以通过更新phpunit.xml
文件来禁用测试环境中的调试模式,而不是更新应用程序以检查测试是否正在运行:
<php>
<env name="APP_ENV" value="testing"/>
<env name="CACHE_DRIVER" value="array"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="QUEUE_DRIVER" value="sync"/>
<env name="APP_DEBUG" value="false"/>
</php>
此外,您不应在配置文件之外使用env
功能。如果您使用配置缓存
env
函数将返回null
https://laravel.com/docs/5.5/configuration#configuration-caching
如果在部署过程中执行config:cache命令,则应确保只从配置文件中调用env函数。
使用config('app.debug')
代替env('APP_DEBUG')
。