|
30 | 30 | - [Exemple](#exemple-7) |
31 | 31 | - [Exemple complet d'un cas de test](#exemple-complet-dun-cas-de-test) |
32 | 32 | - [Configuration du Test](#configuration-du-test) |
| 33 | + - [Test d'un controller CRUD](#test-dun-controller-crud) |
| 34 | + - [Vue d'ensemble](#vue-densemble) |
| 35 | + - [Fonction : `createMockService`](#fonction--createmockservice) |
| 36 | + - [But](#but) |
| 37 | + - [Paramètres](#paramètres) |
| 38 | + - [Retours](#retours) |
| 39 | + - [Exemple d'utilisation](#exemple-dutilisation-1) |
33 | 40 | - [Références supplémentaires](#références-supplémentaires) |
34 | 41 |
|
35 | 42 | ## Introduction |
@@ -346,6 +353,50 @@ afterAll(async () => { |
346 | 353 | }); |
347 | 354 | ``` |
348 | 355 |
|
| 356 | +## Test d'un controller CRUD |
| 357 | +Cette documentation fournit un aperçu détaillé de la fonction utilitaire `createMockService`, conçue pour faciliter la création de services mock pour les besoins de test dans les applications TypeScript, en mettant un accent particulier sur celles utilisant Jest et NestJS. L'initiation du test est similaire à celle des tests de services au niveau du module et de l'instantiation de la base mongoDB. |
| 358 | + |
| 359 | +### Vue d'ensemble |
| 360 | +La fonction `createMockService` améliore dynamiquement la création de services mock, permettant de configurer un nombre arbitraire de comportements d'appel de méthode de manière dynamique. Elle simplifie le processus de configuration des implémentations mock pour les méthodes de service, supportant à la fois des valeurs fixes et des comportements dynamiques définis par des fonctions, y compris des comportements asynchrones basés sur des promesses et la gestion des erreurs. |
| 361 | + |
| 362 | +### Fonction : `createMockService` |
| 363 | + |
| 364 | +#### But |
| 365 | + |
| 366 | +Générer une instance de service mock avec des méthodes simulées selon les comportements spécifiés, rationalisant le test de divers scénarios incluant le succès, l'échec, et les exceptions. |
| 367 | + |
| 368 | +#### Paramètres |
| 369 | + |
| 370 | +- **service** (`new (...args: any[]) => T`): Le constructeur de la classe de service à mocker. Ce paramètre prend une référence de classe que le service mock va imiter. |
| 371 | + |
| 372 | +- **methodStubs** (`Record<string, any[] | any>`): Un objet où les clés représentent les noms des méthodes à mocker, et les valeurs sont les comportements à simuler pour ces méthodes. Ces comportements peuvent être spécifiés comme des valeurs uniques pour un comportement uniforme à travers les appels, des tableaux de valeurs pour définir des comportements séquentiels d'appels, des fonctions pour calculer dynamiquement les valeurs de retour, ou des instances de `Error` pour simuler des exceptions. |
| 373 | + |
| 374 | +#### Retours |
| 375 | + |
| 376 | +- **T**: Une instance mock de la classe de service (`T`), avec des méthodes simulées comme spécifié par le paramètre `methodStubs`. |
| 377 | + |
| 378 | +#### Exemple d'utilisation |
| 379 | + |
| 380 | +```typescript |
| 381 | +service = createMockService<IdentitiesService>(IdentitiesService, { |
| 382 | + create: [ |
| 383 | + () => Promise.resolve({ ...IdentitiesDtoStub(), _id, state: IdentityState.TO_VALIDATE }), |
| 384 | + () => Promise.resolve({ ...IdentitiesDtoStub(), _id, state: IdentityState.TO_COMPLETE }), |
| 385 | + ], |
| 386 | + findAndCount: [ |
| 387 | + () => Promise.resolve([[{ ...IdentitiesDtoStub(), _id }], 1]), |
| 388 | + () => Promise.reject(new Error('Erreur')), // Fonction qui lance une erreur |
| 389 | + ], |
| 390 | + // Autres simulations de méthodes... |
| 391 | +}); |
| 392 | +``` |
| 393 | + |
| 394 | +Dans cet exemple, la fonction `createMockService` est utilisée pour mocker un `IdentitiesService` avec des comportements spécifiques pour les méthodes `create`, `findAndCount`, et d'autres, démontrant comment gérer à la fois les opérations réussies et les erreurs. |
| 395 | + |
| 396 | +**Importance de l'ordre des valeurs retournées** : Il est crucial de comprendre que l'ordre des valeurs retournées dans l'exemple a une importance significative car il correspondra à l'ordre des appels dans les tests. Cela signifie que le comportement simulé pour le premier appel sera le premier dans la liste, et ainsi de suite, permettant une simulation précise des scénarios de test. |
| 397 | + |
| 398 | + |
| 399 | + |
349 | 400 | ## Références supplémentaires |
350 | 401 | Cette documentation couvre l'essentiel des tests des services NestJS en utilisant Jest. Pour plus d'informations détaillées, référez-vous à la documentation de Jest et NestJS. |
351 | 402 | - [Tests NestJS](https://docs.nestjs.com/fundamentals/testing) |
|
0 commit comments