docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api
uk/docs/api/mcp-bundle/developers/testing.md
новий файл +44
−0
1
+
# Тести
2
+
3
+
Тести бандла запускаються в Docker (образ `ufotech/php:8.4-fpm`, див. `docker-compose.yaml` репозиторію):
4
+
5
+
```bash
6
+
make up-d
7
+
make composer-install
8
+
make test # усі набори
9
+
make test ARGS="--testsuite Unit" # один набір
10
+
```
11
+
12
+
`make test` потребує TTY; без нього (наприклад, у скриптах):
13
+
14
+
```bash
15
+
docker exec -w /app php_mcp vendor/bin/phpunit --testsuite Functional
16
+
```
17
+
18
+
| Набір | Що перевіряє | Як |
19
+
| --- | --- | --- |
20
+
| `Unit` | Дерево конфігурації і типізовану конфігурацію, `server.json`, маніфести клієнтів, сховище сесій, носій запиту, виконавця інструментів, імпорт маршрутів, типові точки розширення | PHPUnit, моки |
21
+
| `Functional` | Бандл у застосунку: маршрутизацію, 404/401/403, `initialize`, `tools/list` (групи, версії, переклади, схеми, анотації), `tools/call` (результати, помилки, події, кеш, batch), сесії, stateless-протокол, CORS, DNS rebinding, ліміт тіла, `server.json`, маніфести, точки розширення | `Fixtures\TestKernel`, HTTP-запити через `handle()` + `terminate()` |
22
+
| `E2E` | Офіційний клієнт `mcp/sdk` через справжній HTTP у трьох версіях протоколу (2025-06-18, 2025-11-25, 2026-07-28) | вбудований сервер PHP з `tests/Fixtures/public/index.php` |
23
+
24
+
Застосунок-фікстура (`tests/Fixtures`): процедури в групах `mcp`, `internal`, `off`, `bad`, процедура версії 2, переклади, маршрути як у `config/routes/ufo_mcp.yaml` застосунку. `TestKernel::$mcpConfig` і `TestKernel::$serviceOverrides` змінюють конфігурацію або замінюють сервіс для одного тесту.
25
+
26
+
## Покриття
27
+
28
+
:::warning
29
+
З Xdebug 3.4.2 (образ `ufotech/php:8.4-fpm`) збирання покриття для тестів, що запускають сервер SDK, завершується segmentation fault. Використовуйте pcov.
30
+
:::
31
+
32
+
```bash
33
+
docker exec php_mcp pecl install pcov # один раз для контейнера
34
+
docker exec -w /app -e XDEBUG_MODE=off php_mcp php -d extension=pcov.so -d pcov.enabled=1 \
35
+
vendor/bin/phpunit --testsuite Unit,Functional --coverage-text
36
+
```
37
+
38
+
## Перевірка через MCP Inspector
39
+
40
+
```bash
41
+
docker exec -d -w /app php_mcp php -S 0.0.0.0:8099 tests/Fixtures/public/index.php
42
+
docker run --rm --network container:php_mcp node:22-alpine npx -y @modelcontextprotocol/inspector --cli \
43
+
http://127.0.0.1:8099/mcp --transport http --header "Ufo-RPC-Token: test-token" --method tools/list
44
+
```