我有一些 Jest 测试,只有在之前的另一次测试运行之后才能通过。当我查看全局变量时,我可以看到它在测试之间保留值,这似乎会影响套件。我找不到有关管理全局变量(有时称为 window 或 globalThis)的最佳实践的任何文档。
我在我的代码库中看到了以下一些示例:
const globalAny = global;
beforeEach(() => {
globalAny.window = Object.create(global);
});
afterEach(() => {
globalAny.window = globalAny;
});
这似乎有效,但我想知道这是否是最好的方法?似乎令人惊讶的是没有更多关于此的信息(也许我搜索了错误的搜索词)。
该方法通常是有效的,尽管我也会考虑使用
"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;
});