我刚刚找到了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;
答案 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()
进行跳过测试。
对于我的测试套件,结果如下:
答案 1 :(得分:2)
对于任何可能对评论有所了解的人,Mottie对该问题的评论指出Qunit now has a skip()
function。只需将test()
的所有来电替换为skip()
即可跳过该测试。