Jestjs 获取beforeach()和afterEach()中的Jest测试名称
我正在运行Jest并尝试记录每个测试的开始和结束时间戳。我试图将我的时间戳记录粘贴到beforeach和afterEach块中。如何在beforeach和afterEach块中记录Jest测试的名称Jestjs 获取beforeach()和afterEach()中的Jest测试名称,jestjs,Jestjs,我正在运行Jest并尝试记录每个测试的开始和结束时间戳。我试图将我的时间戳记录粘贴到beforeach和afterEach块中。如何在beforeach和afterEach块中记录Jest测试的名称 另外,是否有一种更全局的方法来记录所有测试前后的测试名称和时间戳,而不使用beforeach和afterEach?beforeach中没有关于当前运行的测试的信息。与Jasmine类似,套件对象在Jest中可用,因为在描述函数中有此上下文,所以可以修补规范定义以公开所需的数据。一种更简单的方法是为截
另外,是否有一种更全局的方法来记录所有测试前后的测试名称和时间戳,而不使用beforeach和afterEach?beforeach中没有关于当前运行的测试的信息。与Jasmine类似,套件对象在Jest中可用,因为在描述函数中有此上下文,所以可以修补规范定义以公开所需的数据。一种更简单的方法是为截取测试名称的全局it定义自定义包装器函数 这是一个更好的方法。报告器接口是自记录的,必要的数据是可编辑的 性能度量已经可用:
module.exports = class TimeReporter {
onTestResult(test, testResult, aggregatedResult) {
for (let { title, duration } of testResult.testResults)
console.log(`test '${title}': ${duration} ms`);
}
}
可以像这样使用:
reporters: ['default', "<rootDir>/time-reporter.js"]
如前所述,在之前和之后,每个描述测试组都会运行一次。您可以通过如下方式访问当前测试的名称: expect.getState.currentTestName 此方法在每次之前/之后也适用 唯一的缺点是,它还将包含当前描述部分的名称。这可能是好的,取决于你想做什么
此外,它也没有提供您所要求的时间信息。关于第二个问题,您考虑过之前和之后吗?@Dario-对不起,我应该说得更清楚。我的意思是获得一些全局方法来记录每个测试的名称和时间戳。不幸的是,Jest在之前和之后都没有这些信息。使用记者正是我想要的。我使用的是Jest 26.0.1的最新版本,但在testResult.testResults中看不到开始时间和结束时间。我是否需要使用特定版本的Jest?我在testResult.testResults中看到了{ancestorTitles,duration,failureMessages,fullName,numPassingAsserts,status,title}。感谢您的注意。看来我选了另一种类型。它目前保持不变。开始时间和结束时间作为testResult.perfStats提供,以防您需要它们。不客气。不幸的是,testResult.perfStats没有细分每个测试的开始和结束时间。