我们将frisby.js
用于自动化API测试,frisby.js
使用Jest
作为测试运行程序。现在,在我们的示例中,我们在执行所有API测试之前进行了全局设置,在测试执行之后,我们进行了全局拆卸。
我在jest.conf.js
中设置的此全局设置和拆卸:
globalSetup: './jest.globalSetup.js',
globalTeardown: './jest.globalTeardown.js',
因此,全局拆卸会导出一个异步函数,该函数在所有测试套件之后都会触发一次。在我们的全球拆解中,我们正在使用外部报告引擎生成测试覆盖率和测试报告:
const coverage = require('./test-coverage-generator');
const XunitViewerCli = require('xunit-viewer/cli');
module.exports = async function() {
await coverage.generateTestCoverage();
await XunitViewerCli({
results: './api/reporting/test-reports/jest-junit-report-' + process.env.API_TEST_FOLDER + '.xml',
ignore: [],
output: './api/reporting/test-reports/jest-junit-report-' + process.env.API_TEST_FOLDER + '.html',
title: 'Test Report API Tests for ' + process.env.API_TEST_FOLDER,
port: false,
watch: false,
color: true,
filter: {}
});
}
报告生成是为什么Jest
在测试结束时生成消息Jest did not exit one second after the test run has completed.
的问题,因为报告生成需要一秒钟以上的时间。
因此,我不想再看到此消息,因为此消息很混乱。也许可以在全局范围内将默认的Jest超时增加一秒钟,还是有其他可能的解决方法来阻止此消息?
答案 0 :(得分:0)
我遇到了类似的事情,解决方案是从globalTeardown
模块导出的函数返回一个Promise。这样的事情应该可以解决问题:
module.exports = async function() {
await coverage.generateTestCoverage();
// returns a promise
return XunitViewerCli({
results: './api/reporting/test-reports/jest-junit-report-' + process.env.API_TEST_FOLDER + '.xml',
ignore: [],
output: './api/reporting/test-reports/jest-junit-report-' + process.env.API_TEST_FOLDER + '.html',
title: 'Test Report API Tests for ' + process.env.API_TEST_FOLDER,
port: false,
watch: false,
color: true,
filter: {}
});
}