2012-12-06 14 views
11

Właśnie znalazłem qHint, metodę integracji testów jsHint w Qunit ... ale to nie działa lokalnie (nie mam na myśli localhost) z wyjątkiem Firefoksa.Pomijanie testu w Qunit

Więc chciałem dodać „ostrzeżenie” lub „Zawiadomienie”, a nie awaria testy, które wskazują, że test został pominięty:

// 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'); 
    }); 
} 

Chciałbym tylko, aby uczynić go bardziej oczywiste, że test był pomijane, czy to możliwe?


Aktualizacja: Dzięki Odi na odpowiedź !, ale musiałem zrobić lekką modyfikację aby uczynić pracę kodu w 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; 
+3

QUnit dodał metodę "' skip() '(http://api.qunitjs.com/QUnit.skip/) w wersji v1.16! – Mottie

Odpowiedz

17

miałem ten sam wymóg i Po prostu zdefiniowałem nowy rodzaj test(), który nazwałem testSkip().

Ta metoda testu zastępuje jedynie funkcję testu i zmienia nazwę na <test name> (SKIPPED). Po tym test jest uważany za przekazany przez QUnit.

Aby dodatkowo zaznaczyć, że jest to pomijany test, dodałem funkcję zwrotną do QUnit.done dla każdego pomijanego testu, aby zmienić kolor testu w wyjściowym HTML na żółty. Te wywołania zwrotne są wykonywane po zakończeniu zestawu testów. Ustawienie wartości bezpośrednio nie działa, ponieważ QUnit stosuje style dla zakończonych/zakończonych testów na końcu przebiegu.

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; 

Następnie można użyć testSkip() zamiast test() do testów pomijane.

Dla mojego testu pakietu wynik wygląda tak: Skipped tests in QUnit

+0

Musiałem wprowadzić drobne modyfikacje, aby uruchomić go w QUnit v1.11.0pre (zamieszczonym powyżej). Dzięki! – Mottie

+1

Musisz dodać 'ok (true);' wewnątrz zmodyfikowanego testu lub QUnit v1.2 będzie narzekał, że w teście są zero asercji. –

+0

@FrancoisVanderseypen Tam * są * zero potwierdza w teście, czy nie byłoby lepiej użyć 'expect (0);' zamiast? – Potherca

2

Dla każdego, kto mógł zaszkliły komentarzach, komentarz Mottie w tej kwestii wskazuje, że Qunit now has a skip() function. Po prostu zamień dowolne połączenie na test() z skip(), aby pominąć ten test.