尽管QUnit运行,但测试结果在QUnit中不可见

时间:2015-02-04 12:52:19

标签: html css qunit

我有很多这样的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>

可能是什么问题?

1 个答案:

答案 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
    });
});

我建议您通过评论测试块来缩小测试导致问题的范围,最后进行单次测试,有时会通过,有时会停止。