在Qunit中跳过测试

时间:2012-12-06 16:31:27

标签: qunit jshint

我刚刚找到了qHint,这是一种将jsHint测试集成到Qunit中的方法......但除了Firefox之外,它在本地不起作用(我不是指localhost)。

所以我想添加一个“警告”或“通知”,而不是测试失败,显示测试被跳过:

// 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;

2 个答案:

答案 0 :(得分: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()进行跳过测试。

对于我的测试套件,结果如下: Skipped tests in QUnit

答案 1 :(得分:2)

对于任何可能对评论有所了解的人,Mottie对该问题的评论指出Qunit now has a skip() function。只需将test()的所有来电替换为skip()即可跳过该测试。