如何确保 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')