【问题标题】:DDEV/Laravel/PHPUnit: Problems with setup in PhpStormDDEV/Laravel/PHPUnit:PhpStorm 中的设置问题
【发布时间】:2022-01-27 12:23:26
【问题描述】:

在 Mac 上使用 Laravel 和 DDEV/Docker,我无法让 PhpStorm 直接运行 PHPUnit 并覆盖。我正在遵循这些说明:https://ddev.readthedocs.io/en/stable/users/topics/phpstorm/

我开始设置

curl -s "https://laravel.build/myproject?with=mysql,redis,memcached" | bash

一切正常,包括在我打开 Xdebug 后使用 Xdebug 进行调试

ddev xdebug on

PHPUnit 也可以通过控制台正常工作:

ddev exec phpunit 

Composer 版本是 2.1.4。

按照上述说明,我被困在第 6 点。

我错过了什么? PHPUnit 位于该目录中,并且它也是 composer 安装的:

【问题讨论】:

  • 不能说 100% 是问题所在(不使用 DDEV,所以不知道他们的说明有多准确),但在您的第一个屏幕截图中,您选择了 phpunit.PHAR 选项但指向 PHPUnit executable... 你知道.../bin/phpunit 可执行文件可能根本不是 PHAR 文件吗?您最好尝试“composer”选项,因为这就是 composer.json 中的 phpunit/phpunit 所代表的。如果您选择 PHAR 选项,则文件必须是 PHAR 文件。
  • 似乎 composer 2.2.* 改变了 phpunit 的安装方式,请参阅 twitter.com/StefanFroemken/status/1474215132544839683 - 您可能需要 ddev config --composer-version=2.1.14 直到新的 composer 2.2.x 损坏解决。
  • 我不知道 DDEV,但不要使用 /var/www/html/vendor/bin/phpunit 而是使用 /var/www/html/vendor/autoload.php 并选择另一个选项:Use Composer autoloader。这在使用 Docker + Composer (PHPUnit) 时一直有效
  • 谢谢,@LazyOne 实际上我在凌晨 3 点有点失明。
  • @rfay:我使用的是 composer-version 2.1.14。这是当前的 ddev 默认值。

标签: macos phpunit phpstorm ddev


【解决方案1】:

在 composer 版本 2.2 中,vendor/bin 中的 phpunit 可执行文件不再是符号链接。这是一个 PHP 文件,在 stream-wrapper 的帮助下包含原始可执行文件,但不允许包含 phpunit:https://github.com/sebastianbergmann/phpunit/issues/4096#issuecomment-585900398

这个bug在composer中解决了: https://github.com/composer/composer/issues/10387#issuecomment-1000246631

在此修复正式发布之前,使用以下方法获取最新的开发版本:

composer self-update --snapshot

您还可以将 PhpStorm 配置为使用原始文件:

vendor/phpunit/phpunit/phpunit

【讨论】:

  • 谢谢,但 ddev 在其当前版本上使用 composer 2.1.4。当我尝试将 .ddev/config.yaml 中的 composer 版本更改为 2.2 或 2.2-dev 并重新启动 ddev 时,它失败了。使用 matiaslauriti 建议的自动加载也不起作用。指向 phpunit 可执行文件不起作用,因为 PHPStorm 需要 .phar 文件。
  • Composer 2.2.2 今天发布了。使用ddev config --composer-version=2.2.2 看看你的表现如何。
  • Composer 2.2.3 今天发布,特别关注这一点,github.com/composer/composer/releases/tag/2.2.3
【解决方案2】:

感谢大家,非常感谢您的帮助。

我是这样解决的:

  1. 我安装了 ddev-edge 以避免 composer 2.1.x。在使用稳定版本的 ddev 时,我无法在 config.yaml 中将其更改为 2.2,而不会导致 ddev 无法重新启动。它仅适用于活动的 docker 实例。
  2. 然后将 ddev 配置为使用最新的 PHP 版本 8.1(对于从头开始的新项目,无论如何这都是有意义的)。
  3. 然后 PHPUnit 的错误变成了一个错误,告诉我 PHP 版本对于 PHPUnit 版本来说太旧了。这是因为 PHPStorm 在连接到 Docker 并检查 CLI 远程解释器时自动选择 PHP 7.4 作为默认值。
  4. 所以我将 PHP 可执行文件从“php”更改为“php8.1”

查看屏幕截图。 现在从 PHPStorm 运行 PHPUnit 可以正常工作,即使有覆盖。

【讨论】:

  • 仅供参考,您可以通过编辑 .ddev/config.yaml 中的 composer_version 或 ddev config --composer-version=2.2.2 来更改 ddev 的 composer 版本。
  • @rfay 我做到了。不工作。 ddev start 那时不起作用。但我不能保证我已经监督了某事。
  • 作曲家版本与ddev start无关。这与能够启动项目没有任何关系。当前作曲家也是 2.2.3。
猜你喜欢
  • 2020-02-14
  • 2021-06-24
  • 1970-01-01
  • 2018-10-04
  • 2020-02-11
  • 2014-07-11
  • 2013-08-21
  • 2021-01-04
  • 1970-01-01
相关资源
最近更新 更多