当前位置: 首页 > 知识库问答 >
问题:

如何解决Jest消息“测试运行完成后一秒钟Jest未退出”的问题?

沈凯康
2023-03-14

我们使用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在测试运行完成后1秒没有退出。在测试结束时,因为报告生成需要1秒以上的时间。

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

共有1个答案

李兴安
2023-03-14

我遇到了类似的问题,解决方案是从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: {}
  });
}
 类似资料:
  • 我正在通过运行Jest测试。默认情况下,Jest并行运行测试。有没有办法让测试按顺序运行? 我有一些测试调用依赖于更改当前工作目录的第三方代码。

  • 我想用Jest做一个测试。 我使用

  • 问题内容: 标题几乎可以解释我所面临的问题。我正在尝试测试具有某种状态的组件,并且试图为该组件提供存储以获取所需的组件。当我使用Jest运行组件的测试时,出现以下错误: 我已经通过了一些读数确定,这是造成或者没有被正确适用于玩笑。但是,我尝试安装这两个软件包并重新运行,但结果没有变化。阅读Jest Github问题页面(删除babel- polyfill的自动包含#2755 )后,我发现Jest从

  • 这个标题很大程度上解释了我面临的问题。我试图测试一个具有某种状态的组件,并试图将我的存储提供给该组件以获取它需要的内容。当我使用Jest运行组件的测试时,我得到以下错误: 通过一些阅读,我确定这是由或未正确应用于Jest造成的。但是,我已经尝试安装这两个软件包并重新运行,结果没有变化。在阅读Jest Github问题页面(删除babel polyfill#2755的自动包含)后,我发现自版本19起

  • 问题内容: 我有一个取决于环境变量的应用程序,例如: 我想测试例如: 可以通过节点env变量设置APP_PORT。 或某个应用程序正在使用以下命令设置的端口上运行 我如何用Jest做到这一点?我可以在每次测试之前设置这些变量,还是应该以某种方式模拟它? 问题答案: 在每次测试之前重设resetModules,然后在测试内部动态导入模块很重要: 如果您在运行Jest之前寻找一种加载env值的方法,请