Ich habe ein Problem mit dem Testen einer Komponente mit MdDialogRef und einem Dienst injiziert. Ich würde gerne testen, dass diese Komponente den injizierten Dienst aufruft. Das Problem ist, dass ich Testkomponente mit MdDialogRef injected ruft Service
fixture = TestBed.createComponent(...);
component = fixture.componentInstance;
service = fixture.debugElement.injector.get(Service);
den Dienst mit den üblichen
nicht abrufen können, da die Komponente mit einem injizierten MDDialogRef wie diese abgerufen werden muss:dialog = TestBed.get(MdDialog);
dialogRef = dialog.open(CompanyLogoComponent);
component = dialogRef.componentInstance;
Dies ist eine Abhilfe für MdDialogRef, die sagt "kein Provider für MdDialogRef verfügbar", und wenn Sie viele Parameter benötigen. (Vielleicht gibt es einen besseren Weg, wie dies zu tun und dann Befestigung verwenden?)
So gibt keine Befestigung Dienst abrufen mit ... ‚debugElement.injector ...‘
Wenn der Dienst eingespritzt wird, ich habe einen anderen Umfang, weil der Spion nicht reagiert:
it('method should call service', inject ([Service], (service: Service) => {
expect(service).toBeTruthy();
spyOn(service, 'method').and.callThrough();
component.methodCallingService();
expect(service.method).toHaveBeenCalled();
}));
Jede Idee, wie ich hier den Umfang an die Komponente binden könnte oder den Dienst über die Komponente (dialogRef.componentInstance) abrufen?
Wow, vielen Dank, das funktioniert :) !!! – Nadine
wirklich hilfreich danke – agriboz