使用 Jasmine Hook 捕获测试套件的总时间或持续时间

Capture Total Time or duration of a Test Suite using Jasmine Hook

我一直在尝试从 jasmineDone 挂钩中检索 'totalTime' 或从 SuiteResult 中检索 'duration',如 [https://jasmine.github.io/api/edge/global.html#] 中所述,但它们似乎不可用。将不胜感激任何指点?

我发现@DublinDev 对此 的回答非常有帮助。这允许我使用 specDone 挂钩获取每次测试的持续时间,我可能会使用它并添加每个结果,但我很想知道我是否做错了什么。

我正在使用上面 link 中的以下代码(第 2 个 link),并且希望 console.logs 中的任何一个输出时间但都没有输出任何内容

function dbReporter() {

  this.jasmineStarted = function (options) { };

  this.specStarted = function (result) { };

  this.specDone = async function (result) { };

  this.suiteStarted = function (result) { };

  this.suiteDone = function (result) {
    console.log('duration=', result.duration)
  }
  this.jasmineDone = async function (result) {
    console.log('totalTime=', result.totalTime)
  }
}

module.exports = dbReporter;

鉴于您已经拥有最新版本的 Jasmine,我建议您制作自己的计时器,该计时器以 jasmineStarted 挂钩开始并以 JasmineDone 挂钩结束。

onPrepare: () => {

    //Create a global variable to be used for the timer
    global.jasmineTimer = 0;

    jasmine.getEnv().addReporter({
        jasmineStarted: function (options) {
            jasmineTimer = Date.now();
            console.log(`Starting execution ${jasmineTimer}`)
        },
        jasmineDone: async function (result) {

            console.log(`Finished execution in ${(Date.now() - jasmineTimer) / 1000}s`)
        }
    })
}