Maîtriser HttpTestingController (et provideHttpClientTesting()) pour intercepter, inspecter et répondre aux requêtes HTTP sans jamais faire de vrais appels réseau.
{
"success": true,
"count": 42,
"data": ["Angular 19", "Signals", "RxJS"]
}Capture l'unique requête attendue vers l'URL indiquée. Échoue si 0 ou plus de 1 requête a été émise.
Simule la réponse HTTP envoyée par le serveur avec le code statut (par défaut 200 OK) et le body JSON.
À appeler dans afterEach() pour s'assurer qu'aucune requête pendante n'a été oubliée.
import { provideHttpClient } from '@angular/common/http';
import { provideHttpClientTesting, HttpTestingController } from '@angular/common/http/testing';
describe('CoursApiService', () => {
let service: CoursApiService;
let httpTesting: HttpTestingController;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
provideHttpClient(),
provideHttpClientTesting(),
CoursApiService
]
});
service = TestBed.inject(CoursApiService);
httpTesting = TestBed.inject(HttpTestingController);
});
afterEach(() => {
httpTesting.verify();
});
it('devrait retourner les cours depuis l\'API', () => {
service.getCours().subscribe(data => {
expect(data.length).toBe(2);
});
const req = httpTesting.expectOne('/api/cours');
expect(req.request.method).toBe('GET');
req.flush([{ id: 1, titre: 'Angular' }, { id: 2, titre: 'React' }]);
});
});