Test时Cannot read the property 'state' of undefined

来源:9-8 创建编辑页面测试编写

慕雪5497580

2020-07-31

老师您好,我在测试时遇到了一个问题, 咨询您一下。

就是有两个component A, B. A 和 B 都被您讲的withContext包起来。 其中B是A的子component。


当我测A时传了props, 也单独命名export A. 但是我monut(A), B中使用context(this.props.data.state…)的那一行报错Cannot read the property of ‘state’.图中那一行在B的文件中。图片描述

写回答

2回答

张轩

2020-08-02

同学你好 看了你给的例子 Child 的一些值是从 context 里面取得,但是在测试的时候,我们并没有 context 赋值,肯定会造成 Child,比如你的例子中 this.props.data.state.items 这个 data 是从 context 传入的,但是在测试中,这个根本是不存在的。

两个解决方法,我都试了一下

1,在 test 中使用 context 来包裹

const wrapper = mount(
    <AppContext.Provider value={{
        state: initData,
    }}>
        <Parent {...props}  />
    </AppContext.Provider>
)

2, 直接把值当props 传给 child,child 就不要用 context 了

0
3
慕雪5497580
回复
张轩
哈哈哈,必须好评。哎,突然发现,已经错过了写评价的机会了,是默认好评。
2020-08-02
共3条回复

张轩

2020-08-01

同学你好 

在容器组件在测试的时候 和context 是无关的,所以任何需要的数据都需要从 props 中注入,看错误是你在初始化这个组件的测试的时候,并没有传入 props.data.state 属性。 

0
3
慕雪5497580
回复
张轩
好的,不用急不用急,?谢谢。
2020-08-01
共3条回复

React16组件化+测试+全流程 实战在线账本项目

轻松上手,从设计图到上线,精通组件化思维和组件测试

713 学习 · 177 问题

查看课程