2017-05-11 10 views
0

mapDispatchToPropsのコンポーネントで2つの簡単なアクションをテストするにはどうすればよいですか。私が使用しているテストの コマンドjest --coverageであり、それは私のコードの次の行をテストするために私に語った:jestでreduxのmapDispatchToPropsで矢印機能をテストするにはどうすればいいですか

export const mapDispatchToProps = (dispatch) => { 
    return { 
----> rightText:() => dispatch(rightText()), 
----> leftText:() => dispatch(leftText()), 
    }; 
}; 

どのように私はmapDispatchToProps内部にこれらの二つの矢印の機能をカバーするためにテストを書くことができますか?

答えて

1

私は最も簡単な方法は、mapDispatchToPropsにスパイを渡すために、次にあなたが返されたオブジェクトの機能をテストすることができていると思う:

const actionProps = mapDispatchToProps(spy) 
// now you can test them 
actionProps.rightText() 
actionProps.leftText() 

rightText()leftText()(それは同期の場合)オブジェクトを返す必要があります。スパイのアクションオブジェクト(またはここではmock)の機能を確認することもできます。

const mockDispatch = jest.fn() 
const actionProps = mapDispatchToProps(mockDispatch) 
actionProps.rightText() 
actionProps.leftText() 

// now you can verify the actions here 
mockDispatch.mock.calls[0][0] 
mockDispatch.mock.calls[1][0] 

そして、あなたにはただのオブジェクトをconnectに渡すことができます。あなたのケースでは、単純にすることができます:

connect(mapStateToProps, { 
    rightText, 
    leftText 
})(Component) 
+1

あなたの答えは非常に便利ですが、1つの小さなミス^^ 'mockDispatch.mock.callsを持っている[0] [0]' ' mockDispatch.mock.calls [0] [ 1] ' があるべき ' mockDispatch.mock.callsは、[0] [0] '' mockDispatch.mock.calls [1] [0] ' Thxをあなたに非常に多くの – Ahcael

関連する問題