Игнорировать метод объекта для отчета о покрытии Стамбула

У меня есть набор модульных тестов для моего веб-приложения, которые запускаются с использованием Mocha и jsdom. Я использую jsdom вместо реального браузера, чтобы мои модульные тесты mocha выполнялись как можно быстрее, и у нас будут интеграционные тесты, которые будут запускать селен, который будет тестировать больше реальных браузерных вещей. Я также использую 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 */ перед каждым оператором в методе?


person ryanzec    schedule 11.02.2015    source источник


Ответы (2)


Для меня работало следующее:

var myObject = {
//...
};

/* istanbul ignore next */
myObject._resizeEvent = function () {
//...
};
person Gil Elad    schedule 11.02.2015
comment
Боялся этого ответа, надеялся на решение, сохраняя при этом возможность определять свойства объекта с помощью исходного определения объекта. Я предполагаю, что это наихудший сценарий, если мне нужно игнорировать эти методы объекта. - person ryanzec; 11.02.2015

Тоже столкнулся с этим, к счастью, myObject._resizeEvent не нужен. Вам просто нужно убедиться, что игнор рядом с именем функции.

Следующие работы:

var myObject = {
    _resizeEvent /* istanbul ignore next */: function() {

    },
}
person Kyle Johnson    schedule 21.11.2018