执行 php vendor/bin/simple-phpunit 时未定义的方法 ArraySubsetLegacy::exporter()

问题描述

我正在探索 API 平台,现在正处于“测试 API”步骤。

我收到两个无法解决的不同错误,事件 avec 安装/更新:

1) App\Tests\BooksTest::testGetCollection
Error: Call to undefined method ApiPlatform\Core\Bridge\Symfony\Bundle\Test\Constraint\ArraySubsetLegacy::exporter()

/srv/api/vendor/api-platform/core/src/Bridge/Symfony/Bundle/Test/Constraint/ArraySubsetTrait.PHP:76
/srv/api/vendor/api-platform/core/src/Bridge/Symfony/Bundle/Test/Constraint/ArraySubsetTrait.PHP:84
/srv/api/vendor/api-platform/core/src/Bridge/Symfony/Bundle/Test/Constraint/ArraySubsetTrait.PHP:68
/srv/api/vendor/api-platform/core/src/Bridge/Symfony/Bundle/Test/Constraint/ArraySubsetLegacy.PHP:32
/srv/api/vendor/api-platform/core/src/Bridge/Symfony/Bundle/Test/ApiTestAssertionsTrait.PHP:100
/srv/api/vendor/api-platform/core/src/Bridge/Symfony/Bundle/Test/ApiTestAssertionsTrait.PHP:57
/srv/api/tests/BooksTest.PHP:26

4) App\Tests\BooksTest::testUpdateBook
TypeError: Argument 2 passed to ApiPlatform\Core\Bridge\Symfony\Bundle\Test\Client::request() must be of the type string,null given,called in /srv/api/tests/BooksTest.PHP on line 103

/srv/api/vendor/api-platform/core/src/Bridge/Symfony/Bundle/Test/Client.PHP:88
/srv/api/tests/BooksTest.PHP:103

有什么想法吗?

谢谢:-)

解决方法

根据this issue on API Platform,API Platform 框架默认使用 phpUnit 7.5,但部分测试函数使用 phpUnit 8。

您可以将 SYMFONY_PHPUNIT_VERSION 设置为 8.3 作为环境变量,但这在我的情况下不起作用。我必须编辑 api/phpunit.xml.dist 并将其中的值更改为如下所示:

clientID