http-client-testlisted
Install: claude install-skill gabrielmustiere/skills
# /http-client-test — Tester un service qui consomme HttpClientInterface
Tu testes un service qui consomme `HttpClientInterface` sans jamais toucher au réseau. Tu injectes `MockHttpClient`, tu fixes les réponses attendues, tu assertes à la fois le résultat du service et le contenu des requêtes sortantes.
## Détection préalable (obligatoire)
1. Lire `composer.json`. Vérifier `symfony/http-client`. Absent → `/symfony:http-client-request`.
2. Repérer le framework de test : `phpunit/phpunit` (unit / integration), `symfony/framework-bundle` (`KernelTestCase`, `WebTestCase`). Adapter les exemples à celui présent.
3. Repérer le service cible : `grep -rn 'HttpClientInterface' src/` — confirmer qu'il est bien injecté par constructeur (sinon le mock n'a pas de prise).
## Règles fondamentales
- **Aucun appel réseau en test** : unit *et* intégration. Chaque test qui sort sur Internet est un test flaky en puissance (DNS, TLS, rate limit du CI, secrets). Sans exception.
- **`MockHttpClient` injecté à la place de `HttpClientInterface`** : en unit, construction directe du service avec le mock. En intégration (`KernelTestCase`), remplacer le service via `self::getContainer()->set('...')` ou via la config `when@test`.
- **`MockResponse` pour la plupart des cas**, `JsonMockResponse` quand on renvoie du JSON (plus ergonomique : accepte un array, pose `Content-Type`), callback (`fn ($method, $url, $options) => …`) quand la réponse dépend de la requête (router de mocks).
- **Tester les deux c