Как протестировать селектор Reselect из вложенного редуктора?

Я создал простой селектор Redux с библиотекой Reselect. Селектор получает последний объект в массиве.

В повторно выбрать документы пример тестирования построен с библиотекой Assert, а не с библиотекой Expect, но мое приложение происходит из приложения React Create, поэтому у меня есть Expect и Jest.

В любом случае, независимо от того, как я пишу тест селектора, он зависает на вложенном редюсере: TypeError: Cannot read property 'arrayOfObj' of undefined.

Селекторы.js

import { createSelector } from 'reselect'

const getArrayOfObj = (state) => state.reducer1.arrayOfObj

export const getLastObj = createSelector(
  [ getArrayOfObj ],
  (arrayOfObj) => {
    return arrayOfObj[arrayOfObj.length-1]
  }
)

Селекторы.test.js

import * as selectors from 'Selectors'

const mockState = {
    reducer1: {
        arrayOfObj: [
        {id: 1}, 
        {id: 2}, 
        {id: 3}, 
        {id: 4},
      ],
      ...
    },
    reducer2: {
      ...
    }
}

describe('selectors', () => {
  it('getLastObj should get last obj in array', () => {
    expect(selectors.getLastObj(mockState)).toDeepEqual({id: 4});
  });
});

person Kwhitejr    schedule 30.07.2017    source источник


Ответы (1)


Мне удалось устранить ошибку, изменив оператор expect с .toDeepEqual() на .toEqual().

person Kwhitejr    schedule 02.08.2017