У меня есть компонент входа в систему, и я хочу проверить, вызывает ли он метод службы с правильными значениями, однако я не знаю, как шпионить за этой службой из компонента.
I 'мы пробовали
beforeEach(() => {
...
authService = TestBed.get(AuthService);
});
И это не работает
it('should pass proper values', () => {
const submitSpy = spyOn(authService, 'signInByLogin');
const loginSpy = spyOn(component, 'signIn').and.callThrough();
const username = fixture.debugElement.query(By.css('#username'));
const password = fixture.debugElement.query(By.css('#password'));
const submitBtn = fixture.debugElement.query(By.css('[type="submit"]'));
username.nativeElement.value = 'test';
password.nativeElement.value = 'password';
fixture.detectChanges();
expect(username.nativeElement.value).toBe('test');
expect(password.nativeElement.value).toBe('password');
expect(submitBtn).toBeTruthy();
fixture.detectChanges();
submitBtn.triggerEventHandler('click', null);
fixture.whenStable().then(() => {
expect(loginSpy).toHaveBeenCalled();
expect(submitSpy).toHaveBeenCalledWith('test', 'password');
});
});
В нем говорится
Ошибка была вызвана после того, как все ожидаемый шпион signInByLogin был вызван с['test', 'password'], но фактические вызовы были ['', ''].
Метод службы вызывается из закрытой функции компонента входа в систему.И звонок
this.authService
.signInByLogin(this.form.controls['login'].value, this.form.controls['password'].value).subscribe(...)