Функция компонента:
onSubmit() {
this.formDataService.sendUserCredentials(this.loginForm.get('email').value,
this.loginForm.get('password').value)
.subscribe(res => {
localStorage.setItem('X-Auth-Token', res.headers.get('X-Auth-Token'));
localStorage.setItem('Authorization', res.headers.get('Authorization'));
localStorage.setItem('userObject', JSON.stringify(res.body));
this.router.navigate(['dashboard']);
}, err => {
this.invalidCredentials = true;
});
}
Метод обслуживания:
sendUserCredentials(userEmail, userPassword) {
const userCredentials = {
email: userEmail,
password: (jsSha.sha512(userPassword)).toUpperCase(),
};
return this.http.post(environment.BASE_URL + 'users/login', userCredentials, {
observe: 'response',
headers: new HttpHeaders().set('Authorization', 'dfsdf-e4vfd-ertrg')
});
}
Модульный тест:
it('API call inside onSubmit resolves successfully', fakeAsync(() => {
const spy = spyOn(service, 'sendUserCredentials').and.returnValue(of('logged-in'));
component.onSubmit();
tick();
expect(spy.calls.any()).toBe(true);
}));
Я могу пройти через линию, где служба метод с именем sendUserCredentials
, но внутри этого метода службы есть строка, в которой я извлекаю заголовки из ответа, и я не могу решить проблему, которую получаю.
Error: TypeError: Cannot read property 'get' of undefined
Эта ошибка специально возникает для 4-й строки компонентной функции.