如何解决 Jest 消息“测试运行完成后,Jest 没有退出一秒钟。”?

Mar*_*tin 5 javascript async-await jestjs frisby.js

我们正在使用frisby.js我们的自动化测试的API和frisby.js应用Jest作为测试运行。现在在我们的例子中,我们在执行所有 API 测试之前进行全局设置,并在测试执行之后进行全局拆卸。

我已经设置了这个全局设置和拆卸jest.conf.js

globalSetup: './jest.globalSetup.js',
globalTeardown: './jest.globalTeardown.js',
Run Code Online (Sandbox Code Playgroud)

因此,全局拆卸会导出一个异步函数,该函数在所有测试套件之后触发一次。在我们的全球拆解中,我们使用外部报告引擎生成测试覆盖率和测试报告:

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: {}
  });
}
Run Code Online (Sandbox Code Playgroud)

而报告生成是为什么在测试结束时Jest生成消息的问题Jest did not exit one second after the test run has completed.,因为报告生成需要一秒钟以上。

所以,我不想再看到这条消息,因为这条消息很混乱。也许可以在全局范围内增加一秒的默认 Jest 超时,或者是否有任何其他可能的解决方案来防止此消息?

Div*_*ani 0

我遇到了类似的事情,解决方案是从模块导出的函数返回一个承诺globalTeardown。像这样的事情应该可以解决问题:

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: {}
  });
}
Run Code Online (Sandbox Code Playgroud)