2012-12-06 3 views
11

방금 ​​QuitT에 jsHint 테스트를 통합하는 방법이 qHint 인 것을 발견했지만 Firefox에서를 제외하고는 로컬에서는 작동하지 않습니다. 난 그냥하고 싶은Quitit에서 테스트 건너 뛰기

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

이 더 분명 시험 이었다는 것을 만들기 위해 :

그래서 나는 테스트가 생략 된 것을 보여주는 "경고"또는 "통지", NOT 테스트 실패를 추가하고 싶었 건너 뛸 수 있습니까?


업데이트 : 감사는 대답 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; 
+3

QUnit은 v1.16에서 ['skip()'방법] (http://api.qunitjs.com/QUnit.skip/)을 추가했습니다! – Mottie

답변

17

나도 같은 요구를했다 및 간단히 말해 testSkip()이라는 새로운 종류의 test()을 정의했습니다.

이 테스트 방법은 테스트 기능을 간단히 대체하고 이름을 <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

+0

QUnit v1.11.0pre (위 게시)에서 작동하려면 약간 수정해야했습니다. 감사! – Mottie

+1

수정 된 테스트 내에'ok (true);'를 추가해야합니다. 그렇지 않으면 Qunit v1.2가 테스트에 어설 션이 없다고 불평 할 것입니다. –

+0

@FrancoisVanderseypen 테스트에서 * assert가 0 일 때'expect (0); '을 사용하는 것이 더 좋지 않습니까? – Potherca