我最近一直在写的一个 JavaScript 插件内置了各种故障保护,告诉整个插件或它的一部分隐藏自己并在它无法运行的情况下死掉。例如,假设我们提供的一项功能是,当用户在在线商店中将鼠标悬停在某商品上时,它会自动生成一个显示竞争对手价格的弹出框。然后我们还会进行一些检查,如果我们不知道任何竞争对手的价格,或者我们无法识别该商品,则不要显示弹出框。
我想使用大致遵循以下结构的测试来测试功能禁用:
- 将我们的插件加载到应该禁用某些功能的页面上
- 欺骗一些会触发该功能的用户操作
- 断言没有对 DOM 进行任何可见的更改。(即不改变可见元素的样式,不添加或删除元素,除非它们有
display:none
)
当然,第 3 步是有趣的一步。有没有一种简单的方法可以在 JavaScript 中编写“DOM 不变”测试?(或者在 Selenium for Python 中,这是我用来编写我的测试的——但在 JavaScript 中编写检查可能更广泛有用,因为它可以在任何 JavaScript 测试环境中使用。)
PS 一些注意事项可以避免“你做错了!” 人群:
是的,我知道我可以将上面测试中的第 3 步替换为检查插件将做出的具体更改是否尚未进行,我什至可能决定这样做。但是,如果这些具体的变化没有明确规定并且容易发生变化,这种包罗万象的方法可能会很有用。
是的,我还意识到,当触发了本应无效果的事件时,仅检查 DOM 没有立即的视觉变化并不足以证明没有任何东西已经损坏。不过,这对我目前的目的来说是最好的。另外,即使结果没有用,它也很有趣。