Caso de error de prueba con observables en servicios

Digamos que tengo un componente que se suscribe a una función de servicio:

export class Component {

   ...

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

La llamada de suscripción toma dos funciones anónimas como parámetros, he logrado configurar una prueba de unidad de trabajo para la función de datos, pero Karma no aceptará cobertura para el error.

Intenté espiar la función console.error, arrojé un error y luego esperé que se llamara al espía, pero eso no es suficiente.

Mi prueba de unidad:

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

¿Cuál es la mejor práctica para probar funciones anónimas como estas? ¿Cuál es el mínimo para asegurar la cobertura de prueba?

Respuestas a la pregunta(2)

Su respuesta a la pregunta