自定义报告器
如果您不喜欢内置 Jasmine 报告器的外观,那么您始终可以自己编写报告器。
创建报告器
Jasmine 报告器只是一个具有可用正确函数的对象。创建自定义报告器时此处没有任何函数是必需的,报告器上未指定的任何函数都将被忽略。
此外,在 Jasmine 3.0 中,这些函数可以全部以套件回调中的方式为异步。通过接收 done
回调并返回 Promise
或使用 async
关键字。有关更多信息,请参阅 异步教程。
可以在 API 文档中找到有关 报告器界面 的更多详细信息。
const myReporter = {
jasmineStarted: function(suiteInfo) {
console.log('Running suite with ' + suiteInfo.totalSpecsDefined);
},
suiteStarted: function(result) {
console.log('Suite started: ' + result.description
+ ' whose full description is: ' + result.fullName);
},
specStarted: async function(result) {
await somethingAsync();
console.log('Spec started: ' + result.description
+ ' whose full description is: ' + result.fullName);
},
specDone: function(result) {
console.log('Spec: ' + result.description + ' was ' + result.status);
for (const expectation of result.failedExpectations) {
console.log('Failure: ' + expectation.message);
console.log(expectation.stack);
}
console.log(result.passedExpectations.length);
},
suiteDone: function(result) {
console.log('Suite: ' + result.description + ' was ' + result.status);
for (const expectation of result.failedExpectations) {
console.log('Suite ' + expectation.message);
console.log(expectation.stack);
}
},
jasmineDone: function(result) {
console.log('Finished suite: ' + result.overallStatus);
for (const expectation of result.failedExpectations) {
console.log('Global ' + expectation.message);
console.log(expectation.stack);
}
}
};
在 Jasmine 中注册报告器
jasmine.getEnv().addReporter(myReporter);
其他备注
如果您编写自定义报告器,则应确保其处理 Jasmine 可报告的所有故障模式。注意:在 Jasmine 3.0 中报告某些故障的方式已经发生了更改。
为了提供帮助,我们有几个示例 Jasmine 套件,您可以在其中检查报告器。
故障类型 应具有报告给 jasmineDone
的全局故障、在 suiteDone
处套件级别的故障以及在 specDone
处规范级别的故障。报告器应向用户显示总共 5 个错误。
排除项 应报告非-fdescribed
规范未运行。此报告器术语在 Jasmine 3.0 中已更改,现在称为 excluded
,以便更准确地表示套件的状态。