Модульные тесты для селекторов редукции

Пожалуйста, предложите мне, как написать модульные тесты для приведенного ниже файла selector.js в реакции

import {createStructuredSelector, createSelector} from 'reselect'
import {List, OrderedMap, fromJS, Map} 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
})

person Arcot Deepika    schedule 24.10.2018    source источник
comment
Вы пробовали что-нибудь?   -  person Gabriel Diez    schedule 24.10.2018
comment
я не знаю как начать   -  person Arcot Deepika    schedule 24.10.2018


Ответы (1)


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