关于react组件mock异步的问题

来源:5-3 React 环境中配置 Jest(2)

Osuribaba

2019-08-08

请问老师,我在react组件挂载完后发个异步请求,然后给这个请求mock了,假数据也传进.then,触发setState了。
但是在测试代码中通过 .debug() 打印得到的还是setState更新之前的组件树。

测试代码:
里头mock的这几个是封装的axios,testData是假数据
图片描述

mock代码:
图片描述

react代码:
在react的useEffect(相当于componentDidMount)里执行了刚才上头mock的方法,然后假数据也成功传进了.then的res里。之后触发了hooks的setState,更新了UI。
图片描述

按照我的理解,把异步方法mock了之后这请求就是同步的了,那setState应该也是同步被触发了。但是在测试代码中打印debug得到的还是UI更新之前的组件树。

图片描述

请问老师遇到过这种情况么?

写回答

1回答

Osuribaba

提问者

2019-08-12

已经解决。在测试中使用setImmediate,在setImmediate中使用 .update() 后可以得到更新后的组件树


0
0

前端要学的测试课 从Jest入门到 TDD/BDD双实战

自动化测试实战 Vue / React 项目,让技术水平和架构思维双提升

1434 学习 · 350 问题

查看课程