createStructuredSelector({inputSelectors}, selectorCreator = createSelector) возвращает функцию структурированного селектора который принимает дерево состояния редукции в качестве параметра. Таким образом, вы можете протестировать его как функцию JavaScript.
Версии пакета:
"reselect": "^4.0.0",
"immutable": "^4.0.0-rc.12",
E.g.
selector.js
:
import { createStructuredSelector } from 'reselect';
import { List } from 'immutable';
const kpi_graphs = (state) => state.getIn(['myReducer', 'kpi_graphs'], List());
const show_chart = (state) => state.getIn(['myReducer', 'isShowChart']);
export const kpiData = createStructuredSelector({
raw_kpi_graph: kpi_graphs,
isShowChart: show_chart,
});
selector.test.js
:
import { kpiData } from './selector';
import { Map, List } from 'immutable';
import { expect } from 'chai';
describe('52972539', () => {
it('should create structed selector correctly if there is a kpi_graphs slice in reducer', () => {
const state = Map({
myReducer: {
kpi_graphs: 'a',
isShowChart: true,
},
});
const actual = kpiData(state);
expect(actual).to.deep.equal({ raw_kpi_graph: 'a', isShowChart: true });
});
it('should create structed selector correctly if there is no kpi_graphs slice in reducer', () => {
const state = Map({
myReducer: {
isShowChart: true,
},
});
const actual = kpiData(state);
expect(actual).to.deep.equal({ raw_kpi_graph: List(), isShowChart: true });
});
});
результат модульного теста:
52972539
✓ should create structed selector correctly if there is a kpi_graphs slice in reducer
✓ should create structed selector correctly if there is no kpi_graphs slice in reducer
2 passing (7ms)
-------------|---------|----------|---------|---------|-------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
-------------|---------|----------|---------|---------|-------------------
All files | 100 | 100 | 100 | 100 |
selector.ts | 100 | 100 | 100 | 100 |
-------------|---------|----------|---------|---------|-------------------
person
slideshowp2
schedule
25.12.2020