Laravel PHPUnit PhpStorm Docker连接

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连接设置似乎有问题,但我无法理解问题出在哪里,因为主应用程序使用的唯一更改是数据库名称,并且使用此名

我已经通过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