Тестування

← Тестування

Ashterix

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

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

1 + # Тестування
2 +
3 + Як запускати тести самого бандла і як вони влаштовані. Знадобиться, якщо ви вносите зміни в REST Bundle.
4 +
5 + ## Запуск
6 +
7 + ```bash
8 + composer install
9 + vendor/bin/phpunit -c phpunit.xml.dist
10 + vendor/bin/phpunit -c phpunit.xml.dist --filter ErrorResponseTest
11 + ```
12 +
13 + `composer test` і `make test` запускають PHPUnit (з 1.2). У Docker (`make up-d`, контейнер `php_<PROJECT_NAME>`):
14 +
15 + ```bash
16 + docker exec php_rest vendor/bin/phpunit -c phpunit.xml.dist
17 + ```
18 +
19 + `cebe/php-openapi` видає deprecation-попередження PHP 8.4 про неявно nullable параметри; це очікувано.
20 +
21 + ## Структура
22 +
23 + | Тека | Тип | Що перевіряє |
24 + | --- | --- | --- |
25 + | `tests/Unit` | без kernel | правила маршрутів `RestServiceMap`, `RpcRestRouteLoader`, параметри й приведення типів `RpcFromRest`, `RestErrorNormalizer` і REST-винятки, лістенери, `RestRouteImport`, білдери OpenAPI і Postman, `RestBundleExtension`, `Package` |
26 + | `tests/Integration` | сервіси контейнера | `RestRequestParser` (групи, версії, HTTP-методи, токени), пріоритети лістенерів |
27 + | `tests/Functional` | HTTP через kernel | маршрути й псевдоніми кількох імпортів, виконання, версії, параметри, помилки RFC 9457, документи й переклади, безпека, `rpc.post_response`, співіснування з іншим адаптером `IApiRouteImport` |
28 + | `tests/Fixtures` | | RPC-процедури, файл маршрутів, переклади, другий адаптер, записувач `rpc.post_response` |
29 +
30 + `tests/TestKernel.php` завантажує FrameworkBundle, SecurityBundle, JsonRpcBundle і цей бандл. Кеш kernel лежить у `<tmp>/ufo-rest-tests`; тест задає `TestKernel::$security` перед `bootKernel()`, щоб отримати контейнер з іншою конфігурацією безпеки. Функціональні тести успадковують `FunctionalTestCase` (`send()`, `json()`).
31 +
32 + ## Примітки
33 +
34 + * Якщо після швидкої зміни fixtures тест бачить старий контейнер, видаліть `<tmp>/ufo-rest-tests`.
35 + * Додавайте функціональний тест на будь-яку зміну маршрутів, статусів, problem-документів чи документації: це REST-контракт.