Пропуск теста в Qunit

Я только что нашел qHint, метод интеграции тестирования jsHint в Qunit... но он не работает локально (я не имею в виду локальный хост), кроме как в Firefox.

Поэтому я хотел добавить «предупреждение» или «уведомление», а НЕ сбой теста, показывающий, что тест был пропущен:

// do unit test if not local or local and running Firefox
t = QUnit.isLocal;
if (!t || (t && /Firefox/.test(navigator.userAgent))) {
    jsHintTest('JSHint core check', 'js/myplugin.js');
} else {
    test('JSHint core check (skipped)', function(){
        ok( true, 'check not done locally' );
    });
}

Я просто хотел бы сделать более очевидным, что тест был пропущен, возможно ли это?


Обновление: спасибо Odi за ответ!, но мне пришлось внести небольшую модификацию, чтобы код работал в QUnit v1.11.0pre:

QUnit.testSkip = function( testName, callback ) {
    QUnit.test(testName + ' (SKIPPED)', function() {
        if (typeof callback === "function") {
            callback();
        }
        var li = document.getElementById(QUnit.config.current.id);
        QUnit.done(function() {
            li.style.background = '#FFFF99';
        });
    });
};
testSkip = QUnit.testSkip;

person Mottie    schedule 06.12.2012    source источник
comment
QUnit добавил метод skip() в версии 1.16!   -  person Mottie    schedule 13.01.2015
comment
https://api.qunitjs.com/QUnit/skip   -  person Bob Stein    schedule 23.08.2019


Ответы (2)


У меня было такое же требование, и я просто определил новый вид test(), который я назвал testSkip().

Этот метод тестирования просто заменяет вашу тестовую функцию и меняет имя на <test name> (SKIPPED). После этого тест считается пройденным QUnit.

Чтобы дополнительно указать, что это пропущенный тест, я добавил функцию обратного вызова в QUnit.done для каждого пропущенного теста, чтобы изменить цвет теста в выводе HTML на желтый. Эти обратные вызовы выполняются, когда набор тестов завершен. Установка значения напрямую не работает, потому что QUnit применяет стили для пройденных/непройденных тестов в конце выполнения.

QUnit.testSkip = function() {
   QUnit.test(arguments[0] + ' (SKIPPED)', function() {
       QUnit.expect(0);//dont expect any tests
       var li = document.getElementById(QUnit.config.current.id);
       QUnit.done(function() {
           li.style.background = '#FFFF99';
       });
   });
};
testSkip = QUnit.testSkip;

Затем вы можете использовать testSkip() вместо test() для пропущенных тестов.

Для моего набора тестов результат выглядит так: Пропущенные тесты в QUnit

person Odi    schedule 06.12.2012
comment
Мне пришлось внести небольшие изменения, чтобы заставить его работать в QUnit v1.11.0pre (опубликовано выше). Спасибо! - person Mottie; 07.12.2012
comment
Вам нужно будет добавить ok(true); внутрь модифицированного теста, иначе QUnit v1.2 будет жаловаться на отсутствие утверждений в тесте. - person Francois Vanderseypen; 11.08.2013
comment
@FrancoisVanderseypen В тесте нет ноль утверждений, не лучше ли вместо этого использовать expect(0);? - person Potherca; 24.01.2014
comment
+1, все равно было бы неплохо пропустить запуск любого кода установки/разборки для пропущенных тестов. Любая подсказка о том, как этого добиться? - person Jordão; 26.08.2014

Для тех, кто, возможно, не обращал внимания на комментарии, в комментарии Мотти к вопросу указывается, что Qunit теперь имеет skip() функцию. . Просто замените любой вызов test() на skip(), чтобы пропустить этот тест.

person munsellj    schedule 18.05.2016