Обновление до Angular / RXJS 6 разрывов Карма тест - PullRequest
0 голосов
/ 21 мая 2018

После того, как я обновился до новой версии Angular, один из моих предыдущих тестов сорвался, и я не знаю почему.А именно, у меня есть функция для регистрации ошибок:

import { Observable, of } from 'rxjs';

export function handleError<T>(operation='operation', result?: T) {
  return (error: any): Observable<T> => {
    console.error(error);
    console.info(`${operation} failed: ${error.message}`);
    return of(result as T);
  }
}

И я проверяю это с помощью:

it('#handleError return function should return an object', () => {
  let errorFunction = handleError('dummyFetch', [{}]);
  expect(typeof errorFunction({ message: 'Something went wrong.'})).toEqual('object');
  expect(errorFunction({ message: 'Something went wrong.'})).toEqual(of([{}]));
});

Строка, которая завершается ошибкой - expect(errorFunction({ message: 'Something went wrong.'})).toEqual(of([{}])); и сообщается об ошибке: Expected $._subscribe = Function to equal Function..Может ли быть так, что тест не пройден из-за функции асинхронной ошибки?

Редактировать: Это решение, с которым я согласился:

it('#handleError return function should return an object', () => {
  let errorFunction = handleError('dummyFetch', [{}]);
  expect(typeof errorFunction({ message: 'Something went wrong.' })).toEqual('object');

  let error = errorFunction({ message: 'Something went wrong.' });
  error.subscribe(value => {
    expect(value).toEqual([{}]);
  });
});

1 Ответ

0 голосов
/ 12 сентября 2018

Если вы переписываете свой тест как

it('#handleError return function should return an object', () => {
  let errorFunction = handleError('dummyFetch', [{}]);
  expect(typeof errorFunction({ message: 'Something went wrong.'})).toEqual('object');
  errorFunction.subscribe((result) => {
        expect(result).toEqual([{}]);
    });
});

Этот тест не пройден из-за наблюдаемых значений, и подписка в вашем окончательном ожидании должна исправить это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...