我有一组QUnit测试,它们自己运行并通过,没有任何问题。然而,当我最近添加了Blanket.js来测量javascript代码覆盖率以帮助查找测试中的漏洞时,突然间我有几个测试失败了。散播一些警报来帮助我定位发生了什么。我发现我所有的失败测试都是使用在状态之间切换的函数上的单击事件。这些测试被切换了两次。我已经研究了什么可能会导致触发器的双重激活,但在我的代码中,函数没有绑定两次,而且我只在头文件中包含了一次javascript文件。
我确实注意到,在Firebug中,Blanket.js会向我正在测试的脚本发出GET请求。GET请求会不会是第二次绑定函数,或者这种双重激活是否还有其他原因?
发布于 2014-12-11 03:28:30
在毛毯的引擎盖下发生了很多事情。据我所知,它本质上是评估你告诉它的代码。因此,任何只会“运行”的东西都将通过加载到DOM中进行一次计算,并在blanket对其进行计算时进行一次计算。
发布于 2015-01-10 17:57:09
因为Blanket将在data-cover-only 中再次加载匹配模式的页面脚本来分析脚本覆盖率,所以您的所有脚本将再次执行,这可能会绑定您的单击事件两次。
你可以在Chrome Dev tools的网络面板中看到它,你会看到这样的请求:

https://stackoverflow.com/questions/24209463
复制相似问题