Тестирование мрамора не использует оператор фильтра - PullRequest
0 голосов
/ 06 июня 2019

РЕДАКТИРОВАТЬ

Я сварил проблему.Следующий код выдает ошибку в тестах, но в браузере работает как положено (см. 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, похоже, проблема с решением для безопасности конечных точек, которое мы используем ...

...