Тестування

← Тестування

Ashterix

docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api

uk/docs/api/rest-bundle/developers/testing.md новий файл +35 −0

Тестування

Як запускати тести самого бандла і як вони влаштовані. Знадобиться, якщо ви вносите зміни в REST Bundle.

Запуск

composer install
vendor/bin/phpunit -c phpunit.xml.dist
vendor/bin/phpunit -c phpunit.xml.dist --filter ErrorResponseTest

composer test і make test запускають PHPUnit (з 1.2). У Docker (make up-d, контейнер php_<PROJECT_NAME>):

docker exec php_rest vendor/bin/phpunit -c phpunit.xml.dist

cebe/php-openapi видає deprecation-попередження PHP 8.4 про неявно nullable параметри; це очікувано.

Структура

Тека Тип Що перевіряє
tests/Unit без kernel правила маршрутів RestServiceMap, RpcRestRouteLoader, параметри й приведення типів RpcFromRest, RestErrorNormalizer і REST-винятки, лістенери, RestRouteImport, білдери OpenAPI і Postman, RestBundleExtension, Package
tests/Integration сервіси контейнера RestRequestParser (групи, версії, HTTP-методи, токени), пріоритети лістенерів
tests/Functional HTTP через kernel маршрути й псевдоніми кількох імпортів, виконання, версії, параметри, помилки RFC 9457, документи й переклади, безпека, rpc.post_response, співіснування з іншим адаптером IApiRouteImport
tests/Fixtures RPC-процедури, файл маршрутів, переклади, другий адаптер, записувач rpc.post_response

tests/TestKernel.php завантажує FrameworkBundle, SecurityBundle, JsonRpcBundle і цей бандл. Кеш kernel лежить у <tmp>/ufo-rest-tests; тест задає TestKernel::$security перед bootKernel(), щоб отримати контейнер з іншою конфігурацією безпеки. Функціональні тести успадковують FunctionalTestCase (send(), json()).

Примітки

  • Якщо після швидкої зміни fixtures тест бачить старий контейнер, видаліть <tmp>/ufo-rest-tests.
  • Додавайте функціональний тест на будь-яку зміну маршрутів, статусів, problem-документів чи документації: це REST-контракт.