Unit testing 使用Observable.fromPromise时RxJs大理石测试失败
我一直在尝试为一个简单的redux可观察史诗编写一个RxJS大理石测试,但无法让它通过。在testScheduler上调用flush时,在被测可观察链中使用fromPromise似乎不会按照预期的大理石序列发出项目 提供测试样本。如果我把“可观察的”从“承诺”改为“可观察的”,测试将通过 任何见解都值得赞赏。RxJS 5/redux可观测0.18Unit testing 使用Observable.fromPromise时RxJs大理石测试失败,unit-testing,rxjs5,redux-observable,Unit Testing,Rxjs5,Redux Observable,我一直在尝试为一个简单的redux可观察史诗编写一个RxJS大理石测试,但无法让它通过。在testScheduler上调用flush时,在被测可观察链中使用fromPromise似乎不会按照预期的大理石序列发出项目 提供测试样本。如果我把“可观察的”从“承诺”改为“可观察的”,测试将通过 任何见解都值得赞赏。RxJS 5/redux可观测0.18 ... const MY_ACTION = 'MY_ACTION'; const myAction = () => ({ type: MY
...
const MY_ACTION = 'MY_ACTION';
const myAction = () => ({
type: MY_ACTION,
payload: {test: 'testval'},
});
const epic = action$ =>
action$.ofType(MY_ACTION).switchMap(() =>
Observable.concat(
Observable.of({type: 'test1'}),
Observable.fromPromise(Promise.resolve({type: 'test2'})),
)
);
it('it should work', () => {
const deepEquals = (actual, expected) => {
expect(actual).to.deep.equal(expected);
};
const createTestScheduler = () =>
new TestScheduler(deepEquals);
const marbles1 = '-a-';
const marbles2 = '-(bc)-';
const values = {
a: myAction(),
b: {type: 'test1'},
c: {type: 'test2'},
};
const ts = createTestScheduler();
const source = ActionsObservable.from(
ts.createColdObservable(marbles1, values)
);
const actual = epic(source);
ts.expectObservable(actual);
ts.expectObservable(actual).toBe(marbles2, values);
ts.flush();
});
...
问题是,
Promise.resolve
是异步的,但是flush
要求合成的观测值是同步的,或者使用测试调度器的虚拟时间概念。感谢您的回复,RxJS文档中是否有我可以查看以了解此约束的地方?回答了我自己的问题-请参阅,似乎不可能。