我正试图在我的Jest测试套件中的每个单独测试之前执行测试设置功能。我知道我可以使用beforeEach
在单个测试文件中完成此操作,但我想对所有测试文件进行全局操作,而不必显式修改每个文件。
我查看了jest configuration file,并注意到一些认为可能有效的配置:globalSetup
和setupFiles
,但它们似乎只运行一次(在测试运行的最初阶段)。就像我说的,我需要在我的测试文件中的“每个”it
块之前运行它。
这可能吗?
您可以使用setupTestFrameworkScriptFile
,它将在每次测试之前运行
// package.json
{
// ...
"jest": {
"setupTestFrameworkScriptFile": "<rootDir>/setupTests.js"
}
}
在setupTests.js
,你可以直接写:
global.beforeEach(() => {
...
});
global.afterEach(() => {
...
});
正如@zzz的答案的后续行动,最近的documentation on Configuring Jest指出:
注意:
setupTestFrameworkScriptFile
不赞成使用setupFilesAfterEnv
。
现在,您的文件应如下所示:
// package.json
{
// ...
"jest": {
"setupFilesAfterEnv": [
"<rootDir>/setupTests.js"
]
}
}
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')
})
试试看!