我正在将大量 QUnit 测试转换为 Jasmine。在 QUnit 中,我习惯于查看所有测试模块的测试总数,显示在顶部。例如:
测试在 157 毫秒内完成。
528 次测试中的 528 次通过,0 次失败。
我认为测试的数量是重要的信息。但是,Jasmine 的示例测试运行程序不显示测试总数。相反,你会得到类似的东西:
通过 106 个规格
这些规范中的每一个都可能包含任意数量的单独测试。是否可以确定已运行的测试总数,以便我可以在我的测试运行器中显示它?我在网上和 Jasmine 文档中查找了信息,但到目前为止还没有找到任何信息。
解决方案
根据@ggozad 的回复,我提出了以下解决方案,该解决方案会打印到控制台。欢迎提出有关如何改进它或如何将结果干净地添加到 Jasmine 的 HTML 输出的建议。
var jasmineEnv = jasmine.getEnv();
var htmlReporter = new jasmine.HtmlReporter();
var reportRunnerResults = htmlReporter.reportRunnerResults;
htmlReporter.reportRunnerResults = function(runner) {
reportRunnerResults(runner);
var specs = runner.specs();
var specResults;
var assertionCount = {total: 0, passed: 0, failed: 0};
for (var i = 0; i < specs.length; ++i) {
if (this.specFilter(specs[i])) {
specResults = specs[i].results();
assertionCount.total += specResults.totalCount;
assertionCount.passed += specResults.passedCount;
assertionCount.failed += specResults.failedCount;
}
}
if (console && console.log) {
console.log('Total: ' + assertionCount.total);
console.log('Passed: ' + assertionCount.passed);
console.log('Failed: ' + assertionCount.failed);
}
};
jasmineEnv.addReporter(htmlReporter);
jasmineEnv.specFilter = function(spec) {
return htmlReporter.specFilter(spec);
};
window.onload = function() {
jasmineEnv.execute();
};
控制台输出示例:
Total: 67
Passed: 67
Failed: 0