如何确保Laravel 5.5正在运行测试?

时间:2017-10-23 02:21:58

标签: php laravel laravel-5.5

我的应用中有一些方法可以检查if (env('APP_DEBUG'))并返回true(或其他),如果我们处于调试模式而不是执行某个DB或API调用。

问题是当我运行phpunit时,应用程序仍处于调试模式,所以它并没有真正"针对实际代码运行测试。

是否可以检查是否正在运行测试,所以我可以if (env('APP_DEBUG') || $testing)?或者有更好的方法来处理这种情况吗?

2 个答案:

答案 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')