Как решить проблему с res.headers.get («Авторизация»), которая не определена в Angular модульном тестировании? - PullRequest
0 голосов
/ 20 февраля 2020

Функция компонента:

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-й строки компонентной функции.

...