Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在一个组件出现';s连接的组件已更新?_Reactjs_Jestjs_Enzyme - Fatal编程技术网

Reactjs 如何在一个组件出现';s连接的组件已更新?

Reactjs 如何在一个组件出现';s连接的组件已更新?,reactjs,jestjs,enzyme,Reactjs,Jestjs,Enzyme,我正在使用jest和enzyme测试我的react应用程序。我有一个连接的组件,上面有一个hoc(connectWithActions)和react redux的connect。通过connectWithActions,我提供了setState、dispatch和getState。我将此HOC用作: compose( connectActions(Handlers), connect(mapStateToProps, mapDispatchToProps), )(MyCompon

我正在使用
jest
enzyme
测试我的react应用程序。我有一个连接的组件,上面有一个hoc(
connectWithActions
)和react redux的
connect
。通过
connectWithActions
,我提供了
setState
dispatch
getState
。我将此
HOC
用作:

compose(
    connectActions(Handlers),
    connect(mapStateToProps, mapDispatchToProps),
)(MyComponent)
我的处理器看起来像:

const Handlers = {
    Handler1: (action, {getState, setState, dispatch}) => {
        setState({newStateValue: action.payload.value})
    }
}
setState
是提供给部件的
setState
。(通过临时议程)

现在,
MyComponent
已经用
newStateValue
更新了道具

因此,开玩笑地说: 我已安装<代码>我的<代码>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());
  });

但是我不知道如何测试这个。我尝试检查道具,但没有任何
newStateValue

以下代码对我有效:

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

    Component.update();

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

你有没有试着把你的主题
装上去而不是
变浅
呢?或者尝试使用
mycomponent.instance().props()