作者:youth冰点 | 来源:互联网 | 2023-01-21 09:18
我正在使用Laravel,这是我的./phpunit.xml文件
./tests/Feature
./tests/Unit
./app
我用以下命令触发了我的一个测试套件:
./vendor/phpunit/phpunit/phpunit --testsuite UnitTests
在我的测试方法中,我有:
public function testAllMandatoryData()
{
dump(env('APP_ENV'));
....
}
它正在显示"本地",我期待phpunit.xml中指定的"测试"
编辑:其他详细信息
我在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中的指令如下:
当docker-compose中的名字已经存在时没有效果.
相反,如果我添加一些未在docker-compose.yml中定义的将在phpunit运行时正确设置,如:
结束编辑
我错过了什么?
谢谢
1> koalaok..:
我尝试用我找到的最佳选择回答自己.
如果在docker-compose.yml文件中设置ENV变量,则无法使用phpunit.xml指令覆盖它们,例如:
然后你应该选择从docker-compose.yml中删除(如本例所示)APP_ENV变量集
并依赖.env Laravel文件
APP_ENV=local
通过此设置,phpunit将能够覆盖APP_ENV以"测试"
对于所有docker agent版本,我仍然不能100%确定需要这种安排.我与另一个Docker版本的另一个主机表现不同.
2> pscheit..:
使用
如果没有force参数,它将无法正常工作。看到这个问题:https :
//github.com/sebastianbergmann/phpunit/issues/2353
和合并的PR:https : //github.com/sebastianbergmann/phpunit/pull/2723