我正在为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>
答案 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;
}