使用RxJs TestScheduler进行测试

时间:2017-10-25 10:42:48

标签: reactjs rxjs react-redux observable redux-observable

我来自Java背景&努力使用RxJs TestScheduler。

以下是我要测试的示例代码:

export const getData = action$ => action$.ofType(ACTIONS.APP.DATA.REQUEST)
    .mergeMap(() => restGet('<some-url>')         
    ).<some-observable>

其中restGET正在进行HTTP调用,我必须使用inject-loader进行模拟,与retryWithDelay相同。

我试过以下:

 const action$ = scheduler.createColdObservable(
            next(0, {type: ACTIONS.APP.DATA.REQUEST})
        );

        const data$ = app.getValue(ActionsObservable.of(action$));

        let actual = startScheduler(data$);

        const expected = [
            next(200, <someAction>),
            complete(200)
        ];

        expect(actual.messages).to.deep.equal(expected); // true
        expect(restGetSpy.calledOnce).to.be.true; // false

我能够使用inject-loader在代码中注入依赖项,并使用testScheduler运行测试但是我的模拟restGetSpy没有被调用似乎流不在里面mergeMap()但它调用了end observable,它引发了成功动作,因为这在我的第一个断言中变得正确。

我无法理解为什么会这样?

欢迎所有建议。

0 个答案:

没有答案