我最近写的一个JavaScript插件有内置的各种故障,它告诉整个插件或其中的一部分隐藏自己并在无法运行的情况下死掉.例如,假设我们提供的一项功能是自动生成一个弹出窗口,当用户在一个在线商店中悬停它时,该弹出窗口显示竞争对手的物品价格.然后我们还会有一些检查说,如果我们不知道任何竞争对手的价格,或者我们无法识别该项目,那么就不要显示弹出窗口.
我想使用大致遵循此结构的测试来测试该功能 – 禁用:
>将我们的插件加载到应该禁用某些功能的页面上
>欺骗一些用户操作,否则会触发该功能
>断言没有对DOM进行任何可见的更改. (即没有样式更改为可见元素,没有添加或删除元素,除非它们显示:none on)
当然,第3步是有趣的.是否有一种简单的方法可以在JavaScript中编写“DOM未更改”测试? (或者在Selenium for Python中,这是我用来编写测试的东西 – 但是用JavaScript编写检查可能更广泛,因为它可以在任何JavaScript测试环境中使用.)
附:一些笔记要说明“你做错了!”人群:
>是的,我知道我可以在上面的测试中替换步骤#3,检查插件本来会做出的具体更改,我甚至可能决定这样做.但是,如果那些具体的变化很难进行并且可能会发生变化,那么这种全面的方法可能会有用.
>是的,我也意识到,当一个意味着无效的事件被触发时,只检查DOM没有立即的视觉变化,这并不足以证明没有任何事情发生.不过,这对我目前的目的来说是最好的.此外,即使事实证明它没有用,它也很有趣.
解决方法:
使用Mutation观察者检测没有发生突变.您可能想要检查Mutation Summary,这是一个非常好的突变观察者高级包装器.检查没有发生突变可能很容易,因为检查返回的数组的长度是否为0.见https://code.google.com/p/mutation-summary/.
原文地址:https://codeday.me/bug/20190625/1285321.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。