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-контракт.