我有一组QUnit测试可以自行运行和传递而没有任何问题。但是,当我最近添加Blanket.js来测量javascript代码覆盖率以帮助找到测试中的差距时,突然间我有几次测试失败。洒上一些警报,帮助我找到正在发生的事情。我发现我所有失败的测试都是在状态之间切换的函数上使用点击事件。这些测试被切换两次。我已经研究了什么可能导致触发器的双重激活,但在我的代码中,函数没有被绑定两次,而且我只在头文件中包含了我的javascript文件一次。
我在Firebug Blanket.js中注意到我正在测试的脚本发出GET请求。 GET请求可能是第二次绑定函数还是有任何其他原因导致此双重激活?
答案 0 :(得分:1)
在毯子的引擎盖下发生了很多事情。据我所知,它主要是评估你告诉它的代码。因此,任何只是“运行”的东西都会通过加载DOM来评估一次,并在再次评估它时再次评估。
答案 1 :(得分:1)
因为Blanket 将此页面脚本匹配的模式data-cover-only
再次加载到analayse脚本范围,所以您的所有脚本第二次执行,这可能会将您的点击事件绑定两次。< / p>
您可以在Chrome开发工具的网络平台中看到它,您会看到以下请求: