测试不通过

来源:5-6 月份选择器进阶测试

慕瓜5414566

2020-12-09


老师关于下拉菜单开启后,点击其他区域,下拉菜单关闭手动测试是有成功的

但是test的时后就失败,也看了警告包了act(),似乎无法作用,搞不懂哪边模拟失败了

http://img.mukewang.com/szimg/5fd03ddc0948e98907680379.jpg

另外还有个不解,一开始是写setOpen(!isOpen),但是下拉菜单开启后 点击其他区域无法作用
改成setOpen(false)才成功,照理说下拉菜单已经开启了isOpen会是true,setOpen(!isOpen)等于

setOpen(false)才对,同样不是很懂什麼原理,这跟生命周其有关吗?

http://img.mukewang.com/szimg/5fd03e7a09626dd904920240.jpg

老师附上源码

MonthPicker.js

MonthPicker.test.js

写回答

1回答

张轩

2020-12-12

同学你好 帮你改好了 请看代码

act(() =>
    eventMap.click({
        target:wrapper.getDOMNode(),
    })
)
wrapper.update()
expect(wrapper.find('.dropdown-menu').length).toEqual(1);
act(() =>
    eventMap.click({
        target:document,
    })
)
wrapper.update()
expect(wrapper.find('.dropdown-menu').length).toEqual(0);


由于课程是比较早的,对于新的 react hooks 的 function component,触发自定义的更新 需要包裹  act 以后,调用 wrapper.update() 让他更新。文档在:https://enzymejs.github.io/enzyme/#react-hooks-support

还有一处改动 直接使用 target:wrapper.getDOMNode() 而不是使用原来的 

ReactDOM.findDOMNode(wrapper.instance()) 我发现 wrapper.instance() 好像已经被废弃了,找到的节点是 null

特别说一下 你用 hooks 改造了这个课程 还有多 branch 的 git flow 很出色。

1
1
慕瓜5414566
哈~谢谢老师!,还在学习摸索,补上wrapper.update()跟wrapper.getDOMNode()真的成功了,剩下还在慢慢理解中
2020-12-15
共1条回复

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

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

713 学习 · 177 问题

查看课程