2015-02-11 80 views
1

我有一套使用Mocha和jsdom运行的Web应用程序的单元测试。为了让我的摩卡单元测试尽可能快地运行,我使用了jsdom而不是真正的浏览器,并且我们将进行集成测试,它将运行硒以测试更多真实的浏览器内容。我也使用istanbul来生成代码覆盖率报告,但是有些代码不能用Mocha/jsdom进行测试。以此代码为例:忽略伊斯坦布尔覆盖报告的对象方法

var myObject = { 
    //... 

    /* istanbul ignore next */ 
    _resizeEvent: function() { 
     if(this.props.isActive) { 
      //.9 match the scss max-height: 90%, this value needs to be kept in sync with the sass code 
      this.getDOMNode().querySelector('.modal__content').style.maxHeight = Math.floor(window.innerHeight * .9) + 'px'; 
      this.getDOMNode().querySelector('.modal__content').style.maxWidth = Math.floor(window.innerWidth * .9) + 'px'; 
      this._centerPosition(); 
     } 
    }, 

    //... 
} 

由于没有真正的浏览器,所以不能用jsdom测试此方法。我遇到的问题是,尽管在对象方法之前我有/* istanbul ignore next */,但仍然告诉我方法中的代码没有被覆盖(而不是仅仅告诉我它被忽略)。

是否有一种简单的方法可以完全忽略对象方法及其所有内容,而无需在方法中的每个语句之前添加/* istanbul ignore next */

回答

0

以下为我工作:

var myObject = { 
//... 
}; 

/* istanbul ignore next */ 
myObject._resizeEvent = function() { 
//... 
}; 
+0

怕这个答案的,希望的是解决方案,同时保持与原来的对象定义定义对象属性的能力。我想这是最糟糕的情况,如果我需要能够忽略这些对象方法。 – ryanzec 2015-02-11 16:50:49

相关问题