Tester le cas d'erreur avec des observables dans les services

Disons que j'ai un composant qui s'abonne à un service de la fonction:

export class Component {

   ...

    ngOnInit() {
        this.service.doStuff().subscribe(
            (data: IData) => {
              doThings(data);
            },
            (error: Error) => console.error(error)
        );
    };
};

Le abonnez-vous appel prend deux fonctions anonymes en tant que paramètres, j'ai réussi à créer un test unitaire pour les données de la fonction mais le Karma n'accepte pas la couverture de l'erreur.

Tester le cas d'erreur avec des observables dans les services

J'ai essayé d'espionnage sur la console.la fonction d'erreur, de lancer une erreur et puis attendre de l'espion d'avoir été appelé, mais qui n'est pas tout à fait le faire.

Mon test unitaire:

spyOn(console,'error').and.callThrough();

serviceStub = {
        doStuff: jasmine.createSpy('doStuff').and.returnValue(Observable.of(data)),
    };

    serviceStub.doStuff.and.returnValue(Observable.throw(

        'error!'
    ));

serviceStub.doStuff().subscribe(

    (res) => {

        *working test, can access res*
    },
    (error) => {

      console.error(error);
      console.log(error);  //Prints 'error!' so throw works.
      expect(console.error).toHaveBeenCalledWith('error!'); //Is true but won't be accepted for coverage.
    }
);

Quelle est la meilleure pratique pour tester les fonctions anonymes comme ceux-ci? Quel est le strict minimum pour sécuriser la couverture de test?

source d'informationauteur user3656550