Laravel PHPUnit PhpStorm Docker连接
我已经通过Docker设置了PHP/MySQL/Apache/Laravel堆栈,没有任何问题,一切都正常运行。我还在PhpStorm中设置了Docker:一切正常 现在,我正在尝试在PhpStorm中设置PHPUnit,这是我以前从未设置过的,尤其是在Docker容器中,因此错误可能非常简单,我只是无法理解哪里出了问题,哪里出了问题:( 当我运行任何测试(工作正常)时,我会收到此类错误: DB连接设置似乎有问题,但我无法理解问题出在哪里,因为主应用程序使用的唯一更改是数据库名称,并且使用此名称的数据库确实存在。两个数据库使用相同的主机、用户名、密码、端口等,用户Laravel PHPUnit PhpStorm Docker连接,laravel,docker,laravel-5,phpunit,phpstorm,Laravel,Docker,Laravel 5,Phpunit,Phpstorm,我已经通过Docker设置了PHP/MySQL/Apache/Laravel堆栈,没有任何问题,一切都正常运行。我还在PhpStorm中设置了Docker:一切正常 现在,我正在尝试在PhpStorm中设置PHPUnit,这是我以前从未设置过的,尤其是在Docker容器中,因此错误可能非常简单,我只是无法理解哪里出了问题,哪里出了问题:( 当我运行任何测试(工作正常)时,我会收到此类错误: DB连接设置似乎有问题,但我无法理解问题出在哪里,因为主应用程序使用的唯一更改是数据库名称,并且使用此名
root
有权执行任何他想要的操作s:
下面是我如何在PhpStorm中设置PHPUnit的。正如您所看到的,PHPUnit.xml
的路径已经设置好,一切看起来都很好
这里是.env
DB_CONNECTION=mysql
DB_HOST=xcard_db
DB_PORT=3306
DB_DATABASE=xcard
DB_TEST_DATABASE=xcard_test
DB_USERNAME=root
DB_PASSWORD=jackjack
这是Laravel的config/database.php
,正如您所看到的,我使用的是DB\u TEST\u数据库,这是唯一的区别(我清理了一些不必要的设置,有或没有它们的错误是相同的):
这是我的phpunit.xml
,其中我使用了DB\u CONNECTION=“xcard\u test”。可能我在这个xml文件中使用了错误的变量,应该用在DB\u CONNECTION
之外的其他地方?或者可能我没有在什么地方设置什么?
也许PHPUnit不知道什么是xcard\u test
,在哪里可以找到此连接设置
<?xml version="1.0" encoding="UTF-8"?>
<phpunit backupGlobals="false"
backupStaticAttributes="false"
bootstrap="vendor/autoload.php"
colors="true"
convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true"
processIsolation="false"
stopOnFailure="false">
<testsuites>
<testsuite name="Unit">
<directory suffix="Test.php">./tests/Unit</directory>
</testsuite>
<testsuite name="Feature">
<directory suffix="Test.php">./tests/Feature</directory>
</testsuite>
</testsuites>
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<php>
<server name="APP_ENV" value="testing"/>
<server name="BCRYPT_ROUNDS" value="4"/>
<server name="CACHE_DRIVER" value="array"/>
<server name="MAIL_DRIVER" value="array"/>
<server name="QUEUE_CONNECTION" value="sync"/>
<server name="SESSION_DRIVER" value="array"/>
<server name="DB_CONNECTION" value="xcard_test"/>
<server name="LOG_CHANNEL" value="test"/>
</php>
</phpunit>
尽管我的回答有点晚,但就像我一样,如果有人因为这个问题而头痛,以下是对我有效的方法: 显然,您需要指定PHPSForm他应该用于与容器交互的网络模式。转到文件>设置>PHP,单击“Docker容器”配置的文件夹图标。在网络模式中,而不是“桥”,使用Docker-compose.yml中使用的网络名称
#Docker Networks
networks:
app-network:
driver: bridge
要正确获取网络名称,请使用docker network ls
此外,您还可以添加容器的链接
尽管我的回答有点晚,但就像我一样,如果有人因为这个问题而头痛,以下是对我有效的方法: 显然,您需要指定PHPSForm他应该用于与容器交互的网络模式。转到文件>设置>PHP,单击“Docker容器”配置的文件夹图标。在网络模式中,而不是“桥”,使用Docker-compose.yml中使用的网络名称
#Docker Networks
networks:
app-network:
driver: bridge
要正确获取网络名称,请使用docker network ls
此外,您还可以添加容器的链接
#Docker Networks
networks:
app-network:
driver: bridge