12

jsHintテストをQunitに統合する方法であるqHintを見つけましたが、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;
4

2 に答える 2

17

私は同じ要件を持っていたので、単純に新しい種類の を定義しまし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 でスキップされたテスト

于 2012-12-06T19:47:37.277 に答える