2
私はReselectライブラリで簡単なReduxセレクタを作成しました。セレクタは配列内の最後のオブジェクトを取得します。ネストされたレデューサーから再選択セレクターをテストするにはどうすればよいですか?
Reselect docsでは、テストサンプルはExpectライブラリではなくAssertライブラリで構築されていますが、私のアプリはReact Create Appから作成されているため、ExpectとJestが含まれています。
とにかく、セレクタテストの作成方法に関係なく、ネストされたレデューサ:TypeError: Cannot read property 'arrayOfObj' of undefined
にハングアップします。
Selectors.js
import { createSelector } from 'reselect'
const getArrayOfObj = (state) => state.reducer1.arrayOfObj
export const getLastObj = createSelector(
[ getArrayOfObj ],
(arrayOfObj) => {
return arrayOfObj[arrayOfObj.length-1]
}
)
Selectors.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});
});
});