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

Unit testing 在Jest中的每个测试之前运行全局测试设置,unit-testing,jestjs,Unit Testing,Jestjs,我试图在Jest测试套件中的每个测试之前执行一个测试设置函数。我知道我可以在单个测试文件中使用beforeach来完成这项工作,但我希望对所有测试文件进行全局操作,而不必显式修改每个文件 我查看了一下,发现了一些本可以工作的配置:和,但它们似乎只运行了一次(在测试运行的最开始)。正如我所说,我需要在测试文件中的“each”it块之前运行它 这可能吗?您可以使用setupfileafterenv(它取代了setupTestFrameworkScriptFile,从jest版本24.x中弃用),它将

我试图在Jest测试套件中的每个测试之前执行一个测试设置函数。我知道我可以在单个测试文件中使用
beforeach
来完成这项工作,但我希望对所有测试文件进行全局操作,而不必显式修改每个文件

我查看了一下,发现了一些本可以工作的配置:和,但它们似乎只运行了一次(在测试运行的最开始)。正如我所说,我需要在测试文件中的“each”
it
块之前运行它


这可能吗?

您可以使用
setupfileafterenv
(它取代了
setupTestFrameworkScriptFile
,从jest版本24.x中弃用),它将在每次测试之前运行

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

作为@zzz答案的后续,最近的注释:

注意:
setupTestFrameworkScriptFile
被弃用,取而代之的是
setupfileafterenv

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

// package.json
{
  // ...
  "jest": {
    "setupFilesAfterEnv": [
      "<rootDir>/setupTests.js"
    ]
  } 
}
//package.json
{
// ...
“笑话”:{
“SetupFileAfterEnv”:[
“/setupTests.js”
]
} 
}

设置文件afterenv
配置是一种方法,是的,您可以在该文件中的每个之前使用,它将在所有套装的每个测试中运行

// jest.config.js

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


试试看

我知道这一点都没有帮助,但我不认为有开玩笑的方法可以做到这一点。注意:这是可行的,但正如@Alvin Lee在下面指出的:“setupTestFrameworkScriptFile被弃用,取而代之的是setupFilesAfterEnv”对我不起作用。。。global.beforeach不是函数。@geoidesic使用setupFilesAfterEnv而不是setupTests(顾名思义,包含beforeach的测试环境将在那时设置)
// jest.config.js

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

// tests/setupTests.ts

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

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