我正在将大量的QUnit测试转换为Jasmine。在QUnit中,我习惯于看到所有测试模块的测试总数,显示在顶部。 E.g:
测试在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
答案 0 :(得分:4)
规范是Jasmine中的 test 。在其中,您可以在其他测试框架中具有与断言类似的期望。因此,您看到的报告数量是每个it
来电的总数:
it('passes some expectations', function () {
...
});
通常,您会在it
中将多个类似单元的测试组合在一起,这可以帮助您将功能组合在一起,并提供有关应用程序开发方式的更一致的视图。
现在,如果您坚持希望了解您的规范中失败/成功的期望,您始终可以从您的记者那里获取此信息。例如,如果您设置htmlReporter
的实例,则可以执行以下操作:
htmlReporter.reportRunnerResults = function (runner) {
...
};
在你的功能中你可以检查各种各样的东西,这里有一些提示:
runner.specs()
为您提供所有规格spec
,results = spec.results()
会告诉您有关您期望的信息。results.totalCount
,results.failedCount
,results.passedCount
正是您所寻求的;)答案 1 :(得分:0)
非常有用的信息。您可能希望将其附加到页面而不是将其写入控制台。您可以用...替换控制台脚本。
var d1 = document.createElement("span");
$(d1).css('font-size', '10pt');
$(d1).html(' (Total Expectations: ' + assertionCount.total);
$(d1).append(', Total Expectations Passed: ' + assertionCount.passed);
$(d1).append(', Total Expectations Failed: ' + assertionCount.failed);
$(d1).append(')');
$(".passingAlert").append(d1);
$(".resultsMenu").append(d1);