2016-10-25 2 views
1

私はこのコンテナmapStateToPropsが正しい小道具にマップされないのはなぜですか?

import { connect } from 'react-redux' 
import { createType, getTypes } from '../modules/type' 

import Type from '../components/Type' 

const mapDispatchToProps = { 
    createType, 
    getTypes 
} 

const mapStateToProps = state => ({ 
    types: state.type.types 
}) 

export default connect(mapStateToProps, mapDispatchToProps)(Type) 

を持っていると私はenzymeを使用してそれをテストしたいと思います。 wrapper.find(TypeContainer).props()が空であるため、それを行うには、私はこのテスト

import React from 'react' 
import { Provider } from 'react-redux' 
import { mount } from 'enzyme' 

import TypeContainer from 'routes/Type/containers/TypeContainer' 

import configureMockStore from 'redux-mock-store'; 
import thunk from 'redux-thunk'; 

const mockStore = configureMockStore([ thunk ]); 
const mockStoreInitialized = mockStore({ 
    type: { 
    types: [ 
     {id: 1, name: 'type 1'} 
    ] 
    } 
}); 

describe.only('(Route) Type',() => { 
    it('should get container',() => { 
    const wrapper = mount(
     <Provider store={mockStoreInitialized}> 
     <TypeContainer /> 
     </Provider> 
    ) 

    expect(wrapper.find(TypeContainer).prop('types')).to.deep.equal([{id: 1, name: 'type 1'}]) 
    }) 
}) 

テストは(アサーション・レベルで)失敗しているを使用しています。なぜ私は見つけることができません。

私がカバレッジレポートを確認すると、私のテストはmapStateToProps関数に渡されました。

私は何かを忘れましたか?

答えて

1

TypeContainerは小道具がtypesと呼ばれる必要はありません、それはは小道具がtypesと呼ばれる必要がありますこれは、ストアからtypesを引き出し、Typeに渡します。だから、それは正しいことをしていないmapStateToPropsです。間違ったオブジェクトに対してアサーションを行っているだけです。

+0

ありがとうございます、あなたはまったく正しいです。このようにタイプをインポートした場合、 'routes/Type/components/Type''からインポートタイプを取得し、アサーションを 'expect(wrapper.find(Type).prop(' types '))に変更します。to.deep.equal([ ]) 'それは働いている – ThomasThiebaud

関連する問題