运行 Dusk with Laravel 在虚拟机 (Homestead) 中遇到端口 3306 和 33060 的问题,具体取决于测试

Running Dusk with Laravel in Virtual Machine (Homestead) encountering problems with port 3306 and 33060 depending on tests

我有一个 Laravel 项目设置 Vagrant/Homestead,现在想开始做一些 Dusk 测试。 当我只是 运行 测试主页是否显示(具有特定元素)时,一切都很好。

然而,当我尝试添加第二个实际创建用户并登录的测试时,问题就出现了。它无法通过我的 .env(或 .env.dusk.local)文件中定义的端口 3306 连接到数据库。

Homestead 有这个虚拟机 运行ning,当从我的主机连接到我的 SQL 数据库时,我还必须向数据库端口添加一个额外的“0” .所以 3306 变成了 33060。所以有一分钟我尝试将 .env.dusk.local 中的数据库端口更改为 33060,然后 运行 测试正常但不再是主页测试。

到目前为止,我一直在研究这个解决方案,认为它与我的 setup/problem 有关,但它并没有给我带来任何进一步的进展:OverrideDbPort

Homestead 在虚拟机内部使用端口 3306,并在您的本地计算机上通过 33060 公开同一端口(当通过 localhost127.0.0.1 连接时)。

相反,如果您通过 Homestead.yaml 文件中的 IP 地址直接连接到您的虚拟机,那么您始终可以通过 3306 进行连接。在我的例子中,我的 Homestead IP 地址是 192.168.10.10,这允许我将我的 DB_PORT 定义为 3306 并让它在我 运行 测试的任何地方工作。

您的另一种选择是使用 Dusk environment file 覆盖任何特定于您的 Dusk 测试的环境变量 - 这将允许您将 DB_PORT 更新为 33060