次のredux-observable叙事詩を持つ:
export const mouseEventEpic = (action$, store) =>
action$
::filter(action => action.type === MOUSE_OUT || action.type === MOUSE_OVER)
::debounceTime(200)
::map(action => getMappedAction(action, store));
const getMappedAction = (action, store) => {
switch (action.type) {
case MOUSE_OVER:
return {type: "OVER"};
case MOUSE_OUT:
return {type: "OUT"};
}
};
そして次のテスト
import { expect } from 'chai';
import configureMockStore from 'redux-mock-store';
import { createEpicMiddleware } from 'redux-observable';
import { mouseEventEpic } from '...';
const epicMiddleware = createEpicMiddleware(mouseEventEpic );
const mockStore = configureMockStore([epicMiddleware]);
describe('Epic...', () => {
let store;
beforeEach(() => {
store = mockStore({});
});
it('test...', () => {
store.dispatch({type:'MOUSE_OVER'});
expect(store.getActions()).to.deep.equal([]);
});
});
store.getActions() は、「MOUSE_OVER」という 1 つのアクションを含む配列を返します。一方、デバウンスを削除すると、別の(および予想される)アクション「OVER」が返されます。
テストでデバウンス演算子をスタブ/削除したいと思います。sinon スタブ関数を使用してこのリンクのアイデアをたどろうとしましたが、成功しませんでした。
RxJS オペレーターまたは具体的にはデバウンス/スロットルをモックする方法に関するいくつかのガイドラインをいただければ幸いです。
React、Mocha、Chai、Enzyme を使用して...
ありがとう