は、以下のReduxの-観察大作有する:
テストReduxの-観察エピックデバウンスオペレータ
export const mouseEventEpic = (action$, store) =>
\t action$
\t \t ::filter(action => action.type === MOUSE_OUT || action.type === MOUSE_OVER)
\t \t ::debounceTime(200)
\t \t ::map(action => getMappedAction(action, store));
const getMappedAction = (action, store) => {
\t switch (action.type) {
case MOUSE_OVER:
return {type: "OVER"};
case MOUSE_OUT:
return {type: "OUT"};
\t }
};
及び以下の試験
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...',() => {
\t let store;
\t beforeEach(() => {
\t \t store = mockStore({});
\t });
\t it('test...',() => {
\t \t store.dispatch({type:'MOUSE_OVER'});
\t \t expect(store.getActions()).to.deep.equal([]);
\t });
});
store.getActions()は、1つのアクション( "MOUSE_OVER")を持つ配列を返します。一方、デバウンスを削除すると、別の(そして予想される)アクションが返されます。
私はテストでデバウンス演算子をスタブ/削除したいと思います。 this linkのアイデアに従うことを試みましたが、成功のないsinon stub関数を使用しました。
RxJSオペレータを模擬する方法や具体的にはデバウンス/スロットルに関するガイドラインがあります。
多くの方法がありますが...、モカ、チャイに反応
おかげ