gpt4 book ai didi

testing - Jest 会在每次套件或测试后重置 JSDOM 文档吗?

转载 作者:行者123 更新时间:2023-11-28 19:42:06 25 4
gpt4 key购买 nike

我正在测试一些组件,这些组件在安装和卸载时会超出其 DOM 结构,以提供其他方式无法实现的特定交互功能。

我正在使用 Jest 和默认的 JSDOM 初始化在节点中创建一个类似浏览器的环境。我在文档中找不到任何建议 Jest 在每次测试执行后重置 JSDOM 的内容,并且没有明确的文档说明如果不是这种情况如何手动执行此操作。

我的问题是,Jest 是在每次测试、套件后重置 JSDOM 实例,还是在所有测试运行中保留一个 JSDOM 实例?如果是这样,我该如何控制它?

最佳答案

要更正(误导性的)已接受的答案并明确强调来自先前评论之一的非常重要的信息:

No. Jest does not clean the JSDOM document after each test run! It only clears the DOM after all tests inside an entire file are completed.

这意味着在每次测试运行后,您必须手动清理在测试期间创建的资源。否则它会导致共享状态,从而导致非常难以跟踪的非常细微的错误。

以下是在 jest 测试套件中的每个单独测试后清理 JSDOM 的非常简单但有效的方法:

describe('my test suite', () => {
afterEach(() => {
document.getElementsByTagName('html')[0].innerHTML = '';
});

// your tests here ...
});

关于testing - Jest 会在每次套件或测试后重置 JSDOM 文档吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42805128/

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