我有很多这样的QUnit测试:
test('some test.', function() {
equal(1, 1, "dummy");
});
我还有一个包含测试套件的.html文件:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Cache-Control" content="no-store" />
<title>QUnit Test Suite</title>
<link rel="stylesheet"
href="http://code.jquery.com/qunit/qunit-1.16.0.css" type="text/css"
media="screen">
<script data-main="MainTest" src="lib/require.js"></script>
</head>
<body>
<div id="qunit"></div>
<div id="dialog"></div>
<div id="test-content"></div>
</body>
</html>
我的问题是,当我打开这个.html文件( testsuite.qunit.html )时,我有时候看不到任何结果只是一个空页面。有时候我会看到一些结果。所有测试都在运行,我可以在顶部看到它:
测试在64毫秒内完成。 161个断言通过,0 失败。
我检查了qunit生成的html,似乎QUnit无法将pass
css类添加到某些测试中。这是一个可见的:
<li id="qunit-test-output-ca229798" class="pass">
<strong><span class="test-name">decorated web service call test</span>
<b class="counts">(1)</b></strong>
<a href="test.js">Rerun</a><span class="runtime">5082 ms</span>
<ol class="qunit-assert-list qunit-collapsed"></ol></li>
这是一个不可见的:
<li id="qunit-test-output-ca229798">
<strong><span class="test-name">decorated web service call test</span>
<b class="counts">(1)</b></strong>
<a href="test2.js">Rerun</a><span class="runtime">5082 ms</span>
<ol class="qunit-assert-list qunit-collapsed"></ol></li>
可能是什么问题?
答案 0 :(得分:0)
大多数时候,我认为这是出于以下两个原因之一:
(1)源代码中的错误(这似乎不太可能,因为有时候测试会对你很好),或者
(2)某些源代码是异步的,因此可能会出现竞争条件。
如果你有任何异步代码(ajax调用,setTimeout,setInterval等),那么你需要使用QUnit async control机制:
QUnit.test('a test with async code', function(assert) {
var done = assert.async(); // tell QUnit you plan to do async stuff
callSomeAsyncFunction(function() {
// this is the callback for the async action
// all of your assertions here
done(); // tell QUnit you're done with async actions
});
});
我建议您通过评论测试块来缩小测试导致问题的范围,最后进行单次测试,有时会通过,有时会停止。