当连接的组件已更新时,如何在玩笑中查找组件的道具?

时间:2018-07-10 08:23:32

标签: reactjs jestjs enzyme

我正在使用jestenzyme来测试我的React应用。我有一个连接的组件,上面有1个临时组件(connectWithActions)和react-redux中的connect。使用connectWithActions,我提供setStatedispatchgetState。我将此HOC用作:

compose(
    connectActions(Handlers),
    connect(mapStateToProps, mapDispatchToProps),
)(MyComponent)

我的处理程序如下:

const Handlers = {
    Handler1: (action, {getState, setState, dispatch}) => {
        setState({newStateValue: action.payload.value})
    }
}

setStatesetState,它为组件提供反应。 (通过HOC)

现在MyComponent的道具更新为newStateValue

所以,开玩笑地说: 我已经mounted(已连接)composedComponent,并且正在模拟将触发Handler1并将状态设置为的操作:

test('test...', () => {
    const node = Component.find('.className');
    node.simulate('click');

    //how do I check that state is updated??
    console.log(Component.find('MyComponent').props());
  });

但是我不知道该如何test。我尝试检查道具,但没有任何newStateValue

1 个答案:

答案 0 :(得分:0)

以下代码对我有用:

test('test...', () => {
    const node = Component.find('.className');
    node.simulate('click');

    Component.update();

    expect(Component.find(MyComponent).props(). newStateValue).toEqual(desiredValue);
  });