Как подписаться на сообщение об ошибке в модульном тестировании angular

Я пытаюсь подписаться на ответ, а также на случай ошибки, но когда я вижу покрытие, он не ошибается.

У меня есть следующий фальшивый сервис,

Моя служба,

fakeService: {

     appVersion() : {

        return of({'version':'1.2.3.4'})
     } 
}

test case1:

 it('Should load version',() => {

    fakeService.appVersion().subscribe((data) {

      expect(data.version).toBe(1.2.3.4)

  });

тестовый пример 2: [для случая ошибки]

  it('Should return error',() => {
   fakeService: {

     appVersion() : {

        return throwError('Error');
     } 
   }
    fakeService.appVersion().subscribe({
     error : err => expect(err).toBe('Error');

  });
 }

В компоненте

   myService.appVersion.subscribe((data) {
      if (data) {
       //// Covered
      } else (err) {
       //// Not covered
      }

   });

Я пытаюсь подписаться на ответ, а также на случай ошибки, но когда я вижу покрытие, он не ошибается.


person learner    schedule 14.09.2019    source источник


Ответы (1)


Прямо сейчас вы на самом деле не проверяете случай ошибки для этой подписки. Для этого вам понадобится что-то вроде

myService.appVersion().subscribe((data) {
  if (data) {
    //// Covered
  }
}, (err) => {
    //// Now covered
  }
});

С тем, как вы это написали, вы сможете протестировать его, используя

fakeService: {
  appVersion() : {
    return of(null);
  } 
}
person Wesley Trantham    schedule 18.09.2019