测试不通过
来源:5-6 月份选择器进阶测试
慕瓜5414566
2020-12-09
老师关于下拉菜单开启后,点击其他区域,下拉菜单关闭手动测试是有成功的
但是test的时后就失败,也看了警告包了act(),似乎无法作用,搞不懂哪边模拟失败了
另外还有个不解,一开始是写setOpen(!isOpen),但是下拉菜单开启后 点击其他区域无法作用
改成setOpen(false)才成功,照理说下拉菜单已经开启了isOpen会是true,setOpen(!isOpen)等于
setOpen(false)才对,同样不是很懂什麼原理,这跟生命周其有关吗?
老师附上源码
写回答
1回答
-
同学你好 帮你改好了 请看代码
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 很出色。
112020-12-15
相似问题