如何在反应中测试连接组件内的功能?

时间:2016-04-13 02:40:52

标签: reactjs redux jestjs

我有一个连接到商店的组件。我必须在react组件中测试一个函数。我怎样才能达到这个功能?

例如:

var newReactComponent = React.createClass({
    functionToBeTested: function(){
        this.props.actions.fetchAll();
    }
});
var mapStateToProps = function (state) {
        return {
            cars: state.carReducer.cars
        }
    };

    var mapDispatchToProps = function (dispatch) {
        return {
            actions: bindActionCreators(_.assign({}, carActions, apiActions), dispatch)
        }
    };

    module.exports = connect(mapStateToProps, mapDispatchToProps)(newReactComponent);
`

1 个答案:

答案 0 :(得分:0)

您可以模拟连接功能以返回所需的对象,以便您可以在测试环境中访问它们。

这样,您将能够访问newReactComponent,然后您可以安装反应组件(使用浅的酶)。

安装后,您将能够访问类方法。

这样的事情:

const actions = {fetchAll: jest.fn()}
const wrapper = shallow(<newReactComponent actions={actions} />);
wrapper.instance().functionToBeTested();
expect(actions.fetchAll).toBeCalled();

我已经回答了类似的问题here