Случай ошибки тестирования с наблюдаемыми в сервисах

Допустим, у меня есть компонент, который подписывается на сервисную функцию:

export class Component {

   ...

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

Вызов подписки принимает две анонимные функции в качестве параметров, мне удалось настроить работающий юнит-тест для функции данных, но Карма не примет покрытие для ошибки.

Я пытался шпионить за функцией console.error, выдавал ошибку и ожидал, что шпион был вызван, но это не совсем так.

Мой юнит тест:

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

Как лучше всего тестировать анонимные функции, подобные этим? Какой минимум необходим для обеспечения покрытия тестами?

Ответы на вопрос(2)

Ваш ответ на вопрос