Testando caso de erro com observáveis em serviços

Digamos que eu tenho um componente que assina uma função de serviço:

export class Component {

   ...

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

A chamada de assinatura aceita duas funções anônimas como parâmetros. Consegui configurar um teste de unidade de trabalho para a função de dados, mas o Karma não aceitará a cobertura do erro.

Tentei espionar a função console.error, lançando um erro e esperando que o espião tivesse sido chamado, mas isso não é suficiente.

Meu teste de unidade:

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.
    }
);

Qual é a melhor prática para testar funções anônimas como essas? Qual é o mínimo necessário para garantir a cobertura do teste?

questionAnswers(2)

yourAnswerToTheQuestion