手指交叉这是我错过的配置选项,但我检查过文档但找不到任何信息......
我希望QUnit显示传递/失败的测试的数量,而不是传递/失败的断言的数量。
目前显示:
13个断言,38个通过,25个失败。
如下所示:
这很烦人,因为我想跟踪我写过的测试数量,在QUnit网站上它实际显示了我想要的内容:
从更改日志看,它在1.11.0中已更改。有没有人有任何关于如何在不破解源代码的情况下更改它的建议(或者黑客攻击源代码 - 虽然这可能会通过github提出并添加...)?
答案 0 :(得分:2)
简短的回答:这是不可能的。事实上,似乎从未有过。
来自更改日志:
将测试重命名为摘要中的断言。修正#336 - 摘要计算断言,但提到“测试”。
QUnit始终计算并输出通过/失败的断言数。然而,在通过它说“测试”它应该说“断言”。如果您重新阅读更改日志,它会将其从“测试”更改为“断言”作为修复,因为这是它应该说的。
关于你的后续问题,是否有可能破解源代码?
查看代码,第1269到1279行似乎是生成输出的地方:
html = [
"Tests completed in ",
runtime,
" milliseconds.<br/>",
"<span class='passed'>",
passed,
"</span> assertions of <span class='total'>",
config.stats.all,
"</span> passed, <span class='failed'>",
config.stats.bad,
"</span> failed."
所以它存储了config.stats对象中的pass / failed次数。不幸的是,从我在源代码中读到的内容来看,它只存储与断言有关的统计信息,而不是测试。据推测,有可能添加一些可以存储失败测试的黑客代码,但是需要对现有源代码有很好的了解,所以我不建议这样做。
正如你所说,你最好的选择是在GitHub上建议它,但是我不知道你在不久的将来会加入什么机会(如果全部的话),看作断言的数量是多少失败(通常)比测试的数量更有价值。
更新:我有更多的搜索源代码,因为我很好奇它会有多难。虽然我无法找到将此功能添加到代码中的任何简单方法,但我确实想到了解决问题的替代方法。
QUnit有一个名为QUnit.testDone()的方法,如果你实现它,将在每个测试完成后自动调用。您可以使用它在每次测试后手动递增测试计数器,并输出到Chrome的开发人员控制台。以下是如何执行此操作的示例:
<!DOCTYPE html>
<html>
<head>
<title>Track Number of Tests Manually</title>
<link type="text/css" rel="stylesheet" href="qunit-1.12.0.css" />
<script type="text/javascript" src="qunit-1.12.0.js"></script>
<script type="text/javascript" src="jquery-1.10.2.min.js"></script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture">
<input type="text" name="aninput" id="aninput" />
</div>
<script>
// Track number of tests run and failed.
var numTests = 0;
var failedTests = 0;
// Outputs the number of failed tests so far. If the console is not cleared each time, then the last message will be the final count.
QUnit.testDone(function( details ) {
// If any previous messages in console, clear them
console.clear();
// Increment number of tests run
numTests++;
// If any assertions have failed, increment number of failed tests
if (details.failed > 0)
failedTests++;
var passed = numTests - failedTests;
// Output to console.
console.log( 'Passed Tests: '+passed+'\nFailed Tests: '+failedTests+'\nTotal Tests: '+numTests);
});
test( "a test", function() {
equal( $('#aninput').val(), '', 'Initially empty');
$('#aninput').val('sometext');
equal( $('#aninput').val(), 'sometext', 'Input text now "sometext"');
});
test( "another test", function() {
equal( $('#aninput').val(), '', 'Initially empty');
$('#aninput').val('sometext');
equal( $('#aninput').val(), 'some text', 'Input text now "some text"'); // Expect to fail, as there is no space in the input
$('#aninput').val(' ');
equal( $('#aninput').val(), '', 'Input should now be empty'); // Expect to fail as was actually set to whitespace, not empty
});
</script>
</body>
</html>
我已经测试了这段代码,似乎可以解决这个问题。我知道这不是您所追求的解决方案,但它确实为您提供了所需的信息,而无需尝试破解QUnit源代码! :)