是否可以检查DOM.readyState for Jasmine

Is it possible to check DOM.readyState for Jasmine?

本文关键字:readyState for Jasmine DOM 检查 是否      更新时间:2023-09-26

我想为我的单元测试创建一个100%覆盖率的结果,不幸的是,它只是不断地说'如果路径没有被采取'。

var state = document.readyState;
if(state === 'interactive' || state === 'complete') {
  runRight();
} else {
  document.addEventListener('DOMContentLoaded', runRight(), false);
}

我尝试了很多东西,但仍然没有进展,这是我的脚本的唯一问题,有人有一个适当的方法来解决这个问题吗?

对于单元测试,您希望模拟所有不属于您的应用程序的方法/变量。在您的情况下,您必须mock/eclipse文档。readyState和document.addEventListener。

如果模拟文档对象不是你的东西,那么你仍然可以通过将代码更改为更单元可测试的方式来获得体面的覆盖率:

    var initialize = function(state, addListener, cb){
        if(state === 'interactive' || state === 'complete') {
          cb();
        } else {
          addListener('DOMContentLoaded', cb(), false);
        }
     }
     initialize(document.readyState, document.addEventListener, runRight);

然后在单元测试中,您将使用不同的输入参数测试initialize方法。

作为旁注,100%的UT覆盖通常很难在合理的努力下实现。