J'importe et utilise HttpClient
dans un service comme suit :
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root',
})
export class MyService {
constructor(private http: HttpClient) { }
getData() {
return this.http.get("url...");
}
}
Cependant, lorsque je lance ng test
pour mon tests unitaires et lorsque ces tests utilisent le service, j'obtiens l'erreur suivante :
Error: StaticInjectorError(DynamicTestModule)[HttpClient]:
StaticInjectorError(Platform: core)[HttpClient]:
NullInjectorError: No provider for HttpClient!
El Documentation d'Angular 6 sur HTTP dit juste de faire ce que j'ai fait ci-dessus.
1 votes
Quel est le code du test unitaire ? C'est important.
0 votes
Duplicata possible de Erreur d'Angular 4 : Aucun fournisseur pour HttpClient
0 votes
@KevinDoyon Non, ma question porte sur l'échec en ce qui concerne les tests unitaires, pas autrement.
4 votes
Et c'est exactement le but de ce duplicata :) Vous n'importez probablement pas
HttpClientModule
dans votre test. Vos tests créent leurs propres modules. Si vous n'importez pasHttpClientModule
(ouHttpClientTestingModule
) là,HttpClient
ne fonctionnera pas car Angular ne le sait pas. Peu importe que vous ayez ajoutéHttpClientModule
à, disons,AppModule
. Il doit être dansTestBed.configureTestingModule
. On pourrait également importer unSharedModule
si vous en avez un, tant queHttpClientModule
est dans leexports
Mais le test sera plus lent car leSharedModule
contiendrait des éléments inutiles0 votes
@KevinDoyon Vous avez raison, merci, j'avais juste besoin d'importer
HttpClientTestingModule
.