PHPUnit 10 升级

在 CakePHP 5 中,PHPUnit 的最低版本已从 ^8.5 || ^9.3 更改为 ^10.1。这引入了 PHPUnit 和 CakePHP 双方的几个重大更改。

phpunit.xml 调整

建议通过以下命令让 PHPUnit 更新其配置文件

vendor/bin/phpunit --migrate-configuration

注意

请确保您已通过 vendor/bin/phpunit --version 升级到 PHPUnit 10,然后再执行此命令!

完成此命令后,您的 phpunit.xml 文件将包含大多数推荐的更改。

新的事件系统

PHPUnit 10 删除了旧的钩子系统,并引入了一个新的 事件系统,这需要您在 phpunit.xml 文件中进行以下调整:

<extensions>
  <extension class="Cake\TestSuite\Fixture\PHPUnitExtension"/>
</extensions>

<extensions>
  <bootstrap class="Cake\TestSuite\Fixture\Extension\PHPUnitExtension"/>
</extensions>

更改为

->withConsecutive() 已被移除

->withConsecutive(['firstCallArg'], ['secondCallArg'])

您可以将已移除的 ->withConsecutive() 方法转换为一个可行的临时解决方案,如以下示例所示:

->with(
    ...self::withConsecutive(['firstCallArg'], ['secondCallArg'])
)

应转换为

静态方法 self::withConsecutive() 已通过 Cake\TestSuite\PHPUnitConsecutiveTrait 添加到基类 Cake\TestSuite\TestCase 中,因此您无需手动将该特质添加到您的 Testcase 类中。

数据提供者必须是静态的

public function myProvider(): array

您可以将已移除的 ->withConsecutive() 方法转换为一个可行的临时解决方案,如以下示例所示:

public static function myProvider(): array