在Jest中的每个测试之前运行全局测试设置

问题描述 投票:2回答:2

我正试图在我的Jest测试套件中的每个单独测试之前执行测试设置功能。我知道我可以使用beforeEach在单个测试文件中完成此操作,但我想对所有测试文件进行全局操作,而不必显式修改每个文件。

我查看了jest configuration file,并注意到一些认为可能有效的配置:globalSetupsetupFiles,但它们似乎只运行一次(在测试运行的最初阶段)。就像我说的,我需要在我的测试文件中的“每个”it块之前运行它。

这可能吗?

unit-testing jestjs
2个回答
6
投票

您可以使用setupTestFrameworkScriptFile,它将在每次测试之前运行

// package.json
{
  // ...
  "jest": {
    "setupTestFrameworkScriptFile": "<rootDir>/setupTests.js"
  }
}

setupTests.js,你可以直接写:

global.beforeEach(() => {
  ...
});

global.afterEach(() => {
   ...
});

3
投票

正如@zzz的答案的后续行动,最近的documentation on Configuring Jest指出:

注意:setupTestFrameworkScriptFile不赞成使用setupFilesAfterEnv

现在,您的文件应如下所示:

// package.json
{
  // ...
  "jest": {
    "setupFilesAfterEnv": [
      "<rootDir>/setupTests.js"
    ]
  } 
}

0
投票

setupFilesAfterEnv配置是要走的路,是的,你可以在该文件中使用beforeEach,它将在所有套装的每次测试中运行。

// jest.config.js

module.exports = {
  setupFilesAfterEnv: ['<rootDir>/tests/setupTests.ts']
}

// tests/setupTests.ts

beforeEach(() => {
  console.log('before each')
})

afterEach(() => {
  console.log('after each')
})

试试看!

© www.soinside.com 2019 - 2024. All rights reserved.