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

时间:2015-05-26 15:32:58

标签: php xml laravel phpunit

我正在为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>

2 个答案:

答案 0 :(得分:2)

只需添加<php>部分以及用于测试环境的变量:

<?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>

答案 1 :(得分:1)

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

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;
}