是否可以检查Jasmine的DOM.readyState?

时间:2016-10-15 15:43:23

标签: javascript jasmine code-coverage

我想为我的单元测试创​​建一个100%的覆盖率结果,不幸的是,它只是一直说“如果没有采取路径”。对于这种情况。

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

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

1 个答案:

答案 0 :(得分:0)

对于单元测试,您希望模拟不属于您的应用程序的所有方法/变量。在您的情况下,您必须模拟/ eclipse document.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);

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

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