Подтвердить что ты не робот

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

Я только что нашел qHint, метод интеграции тестирования jsHint в Qunit... но он не работает локально (я не означает localhost), за исключением 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;
4b9b3361

Ответ 1

У меня было такое же требование, и я просто определил новый тип 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() для пропущенных тестов.

Для моего тестового набора результат выглядит следующим образом: Skipped tests in QUnit

Ответ 2

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