【问题标题】:Undefined method ArraySubsetLegacy::exporter() when executing php vendor/bin/simple-phpunit执行 php vendor/bin/simple-phpunit 时未定义的方法 ArraySubsetLegacy::exporter()
【发布时间】:2020-12-29 17:12:26
【问题描述】:

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

我遇到两个我无法解决的不同错误,事件 avec a composer install / update :

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

有什么想法吗?

谢谢 :-)

【问题讨论】:

  • 您能出示您的 BooksTest 吗?如果文件太长,使用堆栈跟踪中的行(26 和 103)的测试应该足够了。

标签: symfony api-platform.com simple-phpunit


【解决方案1】:

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

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

<server name="SYMFONY_PHPUNIT_VERSION" value="8.3" />

【讨论】:

  • 谢谢,成功了!我尝试将其设置为 9 并且效果也很好?我不知道为什么他们没有在发布时解决此问题?
  • 从我从 github 上的问题中收集到的信息,这是一个向后兼容性问题。
猜你喜欢
  • 2016-04-18
  • 2021-03-18
  • 1970-01-01
  • 2016-11-20
  • 2020-01-05
  • 2014-07-15
  • 2020-09-03
  • 2011-01-03
  • 2018-01-11
相关资源
最近更新 更多