laravel编辑phpunit.xml以在测试时更改环境

laravel编辑phpunit.xml以在测试时更改环境,php,xml,laravel,phpunit,Php,Xml,Laravel,Phpunit,我正在为Laravel中的一个应用程序进行测试,我想更改环境变量的默认配置。 在Laravel文档中: 运行单元测试时,Laravel将自动设置 配置环境以进行测试。 您可以根据需要自由创建其他测试环境配置。 可以在phpunit.xml文件中配置测试环境变量 如何从phpunit.xml更改环境 文件如下: <?xml version="1.0" encoding="UTF-8"?> <phpunit backupGlobals="false" backupStat

我正在为Laravel中的一个应用程序进行测试,我想更改环境变量的默认配置。 在Laravel文档中:

运行单元测试时,Laravel将自动设置 配置环境以进行测试。 您可以根据需要自由创建其他测试环境配置。 可以在phpunit.xml文件中配置测试环境变量

如何从
phpunit.xml
更改环境

文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
     backupStaticAttributes="false"
     bootstrap="bootstrap/autoload.php"
     colors="true"
     convertErrorsToExceptions="true"
     convertNoticesToExceptions="true"
     convertWarningsToExceptions="true"
     processIsolation="false"
     stopOnFailure="false"
     syntaxCheck="false"
>
   <testsuites>
      <testsuite name="Application Test Suite">
         <directory>./app/tests/</directory>
      </testsuite>
   </testsuites>
</phpunit>

/应用/测试/
只需添加带有测试环境变量的
部分:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         bootstrap="bootstrap/autoload.php"
         colors="true"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="false"
         stopOnFailure="false"
         syntaxCheck="false">
    <testsuites>
        …
    </testsuites>
    <php>
        <env name="APP_ENV" value="testing"/>
        <env name="CACHE_DRIVER" value="array"/>
        <env name="SESSION_DRIVER" value="array"/>
        <env name="DB_DATABASE" value="…"/>
        <env name="DB_USERNAME" value="…"/>
        <env name="DB_PASSWORD" value="…"/>
    </php>
</phpunit>

您可以让PHPUnit在安装过程中加载您选择的.env文件。在测试用例中

public function createApplication()
{
    $app = require __DIR__ . '/../bootstrap/app.php';

    Dotenv::load(__DIR__ . '/../', '.env.testing');

    $app->make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();

    $this->baseUrl = env('APP_URL', $this->baseUrl);

    return $app;
}

我希望在测试环境中使用默认的.env.php,而不必添加.env.testing.php或编辑phpunit.xml!Thxy如果有帮助的话,你可以接受我的回答供其他读者参考:)