如何确保 Laravel 5.5 是 运行 测试?
How to ensure that Laravel 5.5 is running a test?
我的应用程序中有一些方法,如果我们处于调试模式而不是执行某个数据库,我会检查 if (env('APP_DEBUG'))
和 return true
(或其他)或 API 调用。
问题是当我 运行 phpunit 时,应用程序仍处于调试模式,因此它不会 "really" 运行 针对实际代码进行测试。
是否可以检查测试是否正在 运行,所以我可以 if (env('APP_DEBUG') || $testing)
?或者有更好的方法来处理这种情况吗?
您正在寻找 App::runningUnitTests()
。
请记住,您不应在配置文件之外使用 env(),而应使用 config('app.debug')
。这可确保您的代码使用缓存配置。
没有更多详细信息,无法回答 "is there a better way"。
您可以通过更新 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
函数将只是 return null
https://laravel.com/docs/5.5/configuration#configuration-caching
If you execute the config:cache command during your deployment process, you should be sure that you are only calling the env function from within your configuration files.
使用 config('app.debug')
而不是 env('APP_DEBUG')
。
我的应用程序中有一些方法,如果我们处于调试模式而不是执行某个数据库,我会检查 if (env('APP_DEBUG'))
和 return true
(或其他)或 API 调用。
问题是当我 运行 phpunit 时,应用程序仍处于调试模式,因此它不会 "really" 运行 针对实际代码进行测试。
是否可以检查测试是否正在 运行,所以我可以 if (env('APP_DEBUG') || $testing)
?或者有更好的方法来处理这种情况吗?
您正在寻找 App::runningUnitTests()
。
请记住,您不应在配置文件之外使用 env(),而应使用 config('app.debug')
。这可确保您的代码使用缓存配置。
没有更多详细信息,无法回答 "is there a better way"。
您可以通过更新 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
函数将只是 return null
https://laravel.com/docs/5.5/configuration#configuration-caching
If you execute the config:cache command during your deployment process, you should be sure that you are only calling the env function from within your configuration files.
使用 config('app.debug')
而不是 env('APP_DEBUG')
。