忽略伊斯坦布尔覆盖率报告的对象方法
Ignore object method for istanbul coverage report
我有一组 运行 使用 Mocha 和 jsdom 的 Web 应用程序单元测试。我正在使用 jsdom 而不是真正的浏览器,以便尽可能快地进行我的 mocha 单元测试 运行 并且我们将进行集成测试 运行 selenium 来测试更多真正的浏览器内容。我也在使用 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 */
?
以下对我有用:
var myObject = {
//...
};
/* istanbul ignore next */
myObject._resizeEvent = function () {
//...
};
也遇到过这种情况,还好没必要myObject._resizeEvent。您只需要确保 ignore next 在函数名称旁边即可。
以下作品:
var myObject = {
_resizeEvent /* istanbul ignore next */: function() {
},
}
我有一组 运行 使用 Mocha 和 jsdom 的 Web 应用程序单元测试。我正在使用 jsdom 而不是真正的浏览器,以便尽可能快地进行我的 mocha 单元测试 运行 并且我们将进行集成测试 运行 selenium 来测试更多真正的浏览器内容。我也在使用 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 */
?
以下对我有用:
var myObject = {
//...
};
/* istanbul ignore next */
myObject._resizeEvent = function () {
//...
};
也遇到过这种情况,还好没必要myObject._resizeEvent。您只需要确保 ignore next 在函数名称旁边即可。
以下作品:
var myObject = {
_resizeEvent /* istanbul ignore next */: function() {
},
}