我第一次尝试使用React上下文API将信息从主要组件传递给他的孙子组件。
到目前为止没有问题。一切正常。 ChildComponent已检索到上下文值。
最后一个期望失败,并且上下文值是一个空对象。所以foo是不确定的
我在这里重新创建了问题: https://codesandbox.io/embed/x25yop4x5w?fontsize=14
谢谢您的帮助
答案 0 :(得分:1)
酶context
影响旧版React上下文,而不影响现代上下文API。应该用:
mount(<MyContext.Provider value={{foo: 987}}><ChildComponent/></MyContext.Provider>)
并通过以下方式断言:
expect(wrapper.find('h2').text()).toBe('Context value: 987');
答案 1 :(得分:1)
我用来测试需要安装在上下文提供者树中的组件的方法是使用wrappingComponent
和wrappingComponentProps
options for mount。
这可确保mount(根组件)的返回值仍然是您要测试的组件(并且仍支持仅对根组件有效的API /选项,例如setProps
)。 / p>
mount(<MyComponent />, {
wrappingComponent: MyContext.Provider,
wrappingComponentProps: {
value: { foo: 987 },
},
})