После того, как я обновился до новой версии 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([{}]);
});
});