【发布时间】:2018-02-05 22:07:14
【问题描述】:
我正在使用 Laravel,这是我的 ./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">
<testsuites>
<testsuite name="FeatureTests">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
<testsuite name="UnitTests">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<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="DB_CONNECTION" value="sqlite_testing" />
</php>
</phpunit>
我正在使用以下命令触发我的一个测试套件:
./vendor/phpunit/phpunit/phpunit --testsuite UnitTests
在我的测试方法中,我有:
public function testAllMandatoryData()
{
dump(env('APP_ENV'));
....
}
它显示“本地”,我期待 phpunit.xml 中指定的“测试”
<env name="APP_ENV" value="testing"/>
编辑:附加细节 我在 Docker 容器中运行了这个 laravel 应用程序
在 docker-compose.yml 我设置了一些环境变量,例如:
environment:
- APP_ENV=local
- DB_HOST=192.168.0.22
- DB_PORT=33306
- DB_DATABASE=mydatabase
- DB_USERNAME=homestead
- DB_PASSWORD=homestead
我注意到 phpunit.xml 中的指令如下:
<env name="APP_ENV" value="testing"/>
当名称已经在 docker-compose 中时无效。
相反,如果我添加一些未在 docker-compose.yml 中定义的内容,将在 phpunit 运行时正确设置,例如:
<env name="DB_CONNECTION" value="sqlite_test"/>
结束编辑
我错过了什么?
谢谢
【问题讨论】:
-
我不确定您是否可以在应用程序级别覆盖容器变量?也许这些帮助:github.com/docker/compose/issues/3183, philippe.bourgau.net/…
标签: xml laravel docker phpunit