РЕДАКТИРОВАТЬ
Я сварил проблему.Следующий код выдает ошибку в тестах, но в браузере работает как положено (см. https://github.com/prumand/jest-marbles-merge-map и https://github.com/ReactiveX/rxjs/issues/4837)
- тесты: возвращает браузер WE_FINISH
- (ожидается): MY_NEW_ERROR
// code
export default function basicMergeMapObs(
action$: Observable<Action>
) : Observable<any> {
return action$.pipe(
filter((val: Action) => {
throw new Error('We stop here')
}),
map((val: Action) => ({
type: 'WE_FINISH',
})),
catchError(() => of({
type: 'MY_NEW_ERROR',
}))
)
}
// test
it('should yield an MY_ERROR', () => {
const source = of({
type: 'TEST',
status: 'NEW'
})
getScheduler().run(helpers => {
const { expectObservable, cold } = helpers
expectObservable(
basicMergeMapObs(
source
)
).toBe(
'(t|)',
{
t: { type: 'MY_NEW_ERROR' }
}
)
})
})
function getScheduler() {
return new TestScheduler((actual, expected) => {
expect(actual).toMatchObject(expected);
});
}
ОБНОВЛЕНИЕ 19.06.2019
Я добавил пример использования картриджей из данной проблемы с github, который работает нормально. Тем не менее мой пример не удалсяНе знаю почему. ИМО всегда должно выдавать ошибку.
И еще одно обновление, тесты не проваливаются на Linux, а только на моей машине с Windows
ОБНОВЛЕНИЕ 02.07.2019 : O, похоже, проблема с решением для безопасности конечных точек, которое мы используем ...