为每个测试重置 Node 全局变量的最佳方法是什么?

问题描述 投票:0回答:1

我有一些 Jest 测试,只有在之前的另一次测试运行之后才能通过。当我查看全局变量时,我可以看到它在测试之间保留值,这似乎会影响套件。我找不到有关管理全局变量(有时称为 window 或 globalThis)的最佳实践的任何文档。

我在我的代码库中看到了以下一些示例:

const globalAny = global;

beforeEach(() => {
    globalAny.window = Object.create(global);
});

afterEach(() => {
    globalAny.window = globalAny;
});

这似乎有效,但我想知道这是否是最好的方法?似乎令人惊讶的是没有更多关于此的信息(也许我搜索了错误的搜索词)。

node.js jestjs global
1个回答
0
投票

该方法通常是有效的,尽管我也会考虑使用

"setupFilesAfterEnv"
属性。

https://jestjs.io/docs/configuration#setupfilesafterenv-array

我通常也会在该文件中执行以下操作:

// jest.setup.js
beforeEach(() => {
    // Reset `window` to an empty object before each test to ensure isolation
    global.window = {};
});

afterEach(() => {
    // Clean up after each test
    delete global.window;
});
© www.soinside.com 2019 - 2024. All rights reserved.