Retour au cours

Tester les Services et Mocks d'Injection de Dépendances

Le Développeur Angular Complet : de Zéro à Héros

75. Tester les Services et Mocks d'Injection de Dépendances

Les services contiennent la logique métier et la récupération de données. Lorsqu'on teste un service qui dépend d'un autre (une dépendance), nous utilisons des mocks/spies pour isoler l'unité testée.

1. Tester un service sans dépendances

typescript describe('MathService', () => { let service: MathService;

beforeEach(() => { service = new MathService(); });

it('devrait calculer la somme correctement', () => { expect(service.add(2, 3)).toBe(5); }); });

2. Tester un service avec dépendances (Mocking)

Nous devons souvent simuler des dépendances comme HttpClient. Au lieu de faire de vrais appels API, nous remplaçons la dépendance par un objet "spy" qui contrôle la valeur de retour.

typescript describe('UserService', () => { let userService: UserService; let mockHttp: any;

beforeEach(() => { mockHttp = jasmine.createSpyObj('HttpClient', ['get']);

TestBed.configureTestingModule({
  providers: [
    UserService,
    { provide: HttpClient, useValue: mockHttp }
  ]
});

userService = TestBed.inject(UserService);

});

it('devrait appeler GET lors de la récupération des utilisateurs', () => { mockHttp.get.and.returnValue(of([{ id: 1, name: 'Test' }]));

userService.getUsers().subscribe(users => {
  expect(users.length).toBe(1);
});

expect(mockHttp.get).toHaveBeenCalledWith('/api/users');

}); });