0

编辑

我把问题归结了。以下代码在测试中产生错误,但在浏览器中按预期工作(请参阅https://github.com/prumand/jest-marbles-merge-maphttps://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 问题中添加了 carants 示例,效果很好。我的例子仍然失败。不知道为什么。IMO 它应该总是抛出一个错误。

还有另一个更新,测试不会在 linux 上失败,但只能在我的 windows 机器上

更新 02.07.2019 :O 似乎是我们使用的端点安全解决方案的问题......

4

0 回答 0