2017-07-30 2 views
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}); 
    }); 
}); 

答えて

0

私は.toEqual()

.toDeepEqual()から expectステートメントを変更することで、エラーを解決することができました
関連する問題