gpt4 book ai didi

jestjs - Jest 中的 globalSetup、setupFiles、setupFilesAfterEnv 和 beforeAll 有什么区别,它们的具体用途是什么?

转载 作者:行者123 更新时间:2023-12-03 23:39:25 27 4
gpt4 key购买 nike

我已经阅读了 Jest 文档,我认为它们按此顺序运行。我还了解到 globalSetup 在不同的进程中运行,因此不与常规测试套件共享任何范围,而是与 globalTeardown 共享任何范围,因此这将是启动测试数据库服务器的好地方。
无论如何,我不清楚我是否做对了,以及我应该使用其他的做什么。

最佳答案

globalSetup导出 async 的模块的路径将在一切之前运行一次的函数。此处定义的全局变量只能在 globalTeardown 中读取.
通常,模拟出任何依赖关系更有意义,但如果您别无选择,只能启动数据库或其他在测试期间绝对必须运行的外部服务,globalSetup将是这样做的地方。
setupFiles/setupFilesAfterEnvsetupFiles是将在每个测试文件之前和安装测试框架之前运行一次的模块列表。setupFilesAfterEnv是将在每个测试文件之前但在环境中安装测试框架之后运行一次的模块列表。
通常 setupFilesAfterEnv是在每个测试文件之前运行的任何设置代码的正确位置。仅使用 setupFiles如果您有特定原因需要在安装测试框架之前运行代码。
你可以想到setupFilesAfterEnv作为全局beforeAll .
如果必须在每个测试文件的开头执行某些操作(例如:configuring the Enzyme adapter),那么在 setupFilesAfterEnv 中执行一次是有意义的。文件。
beforeAllJest将运行所有 beforeAll在运行其他任何东西之前在测试文件中运行一次。
使用beforeAll对于必须在一个特定测试文件的开头运行一次的代码。

例子
包.json

{

...

"jest": {
"globalSetup": "./globalSetup.js",
"globalTeardown": "./globalTeardown.js",
"setupFiles": ["./setupFile.js"],
"setupFilesAfterEnv": ["./setupFileAfterEnv.js"]
}
}

globalSetup.js
module.exports = async () => {
console.log('in globalSetup');
global.GLOBALSETUP = 'globalSetup';
};
globalTeardown.js
module.exports = async () => {
console.log('in globalTeardown');
console.log(global.GLOBALSETUP);
};
安装文件.js
console.log('in setupFile');
global.order = [];
global.order.push(1);
setupFileAfterEnv.js
console.log('in setupFileAfterEnv');
global.order.push(2);
测试.js
beforeAll(() => {
console.log('in beforeAll');
global.order.push(3);
});

test('order', () => {
expect(global.GLOBALSETUP).toBeUndefined(); // SUCCESS
expect(global.order).toEqual([1, 2, 3]); // SUCCESS
});
输出
Determining test suites to run...in globalSetup
console.log
in setupFile

at Object.<anonymous> (setupFile.js:1:98)

console.log
in setupFileAfterEnv

at Object.<anonymous> (setupFileAfterEnv.js:1:1)

console.log
in beforeAll

at Object.<anonymous>.beforeAll (src/test.js:3:11)

PASS src/test.js
✓ order (4 ms)

Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 0.658 s, estimated 1 s
Ran all test suites.
in globalTeardown
globalSetup

Watch Usage: Press w to show more.

关于jestjs - Jest 中的 globalSetup、setupFiles、setupFilesAfterEnv 和 beforeAll 有什么区别,它们的具体用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66736782/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com