Hallo, ich versuche, meine Komponenten in Angular2 zu testen, habe aber ein Problem, wenn ich versuche, meinen Dienst zu verspotten. Ich befolge derzeit die Angular2-Dokumente zum Testen.Angular2 Testkomponente
Ich rufe meine Backend-API an, die ich aus dem eckigen Dienst erstellt habe, was gut funktioniert, solange ich ein JWT-Token habe. Aber wenn es um das Testen geht, möchte ich nur den Service in meinem Komponententest verspotten.
Dienst
@Injectable()
export class ItemService {
constructor(private _http: AuthHttp, private _store: Store<AppStore>) {}
items(): Observable<any[]> {
return this._http.get(ENDPOINT_ITEMS, {withCredentials: false})
.map((response: Response) => response.json().data);
}
}
Komponente
@Component({
selector: 'items',
template: require('./items.component.html'),
providers: [ItemService]
})
export class ItemsComponent {
items: Observable<Array<Object>>;
constructor(private _service: ItemService) {}
ngOnInit(): any {
this.items = this._service.items();
}
}
Komponententest
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ ItemsComponent ],
providers: [
{ provide: ItemService, useValue: itemsMock },
]
});
fixture = TestBed.createComponent(ItemsComponent);
itemService = fixture.debugElement.injector.get(ItemService)
würde ich meine verspottet ItemService mag den useValue, itemsMock zurückzukehren, für mich, so kann ich testen, dass mein HTML-Tags haben die richtigen Daten. Aber es sieht nicht so aus, als ob mein Service richtig verspottet wird?
immer diese Fehlermeldung:
Error: Error in ./ItemsComponent class ItemsComponent_Host - inline template:0:0 caused by: No provider for AuthHttp! in karma.entry.js (line 17341)
Vielen Dank! Einen Schritt weiter und es funktioniert, Zeit um zu refaktorieren! – mertje