使用 Jest 测试 DOMParser

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

我有一个使用 DOMParser 解析 XML 的方法,如下所示:

this.parseXmlString = function(xmlDocStr) {
    var xmlDoc;
    var parser= new window.DOMParser();

    xmlDoc = parser.parseFromString( xmlDocStr, "text/xml" );
    // here I do some stuff with xmlDoc

    return xmlDoc;
};

问题是:当我尝试用 Jest 对该函数进行单元测试时,

window.DOMParser
未定义。测试很简单:

expect(x2js.parseXmlString(xmlDocStr)).toMatchObject(expectedObject);

有什么方法可以在 Jest 单元测试中使用 DOMParser 吗?

javascript unit-testing jestjs domparser
2个回答
9
投票

您不需要

window
参考。只需使用
new DOMParser()...
。确保 Jest 配置中有
"testEnvironment": "jsdom"
(不过它应该是 default)。

我在这里创建了一个示例。 https://repl.it/@ChrisPaton/FlusteredNearDecimal

您很可能还需要最新版本的 Jest,因为

jsdom
仅在 10 月底添加了对 DOMParser
XMLSerializer
 的支持。

更新 Jest v11 以上

JSDom

不支持。您需要为此配置自定义环境。这里是他们的文档的链接,这里是一个易于使用的自定义 jsdom 环境的链接。我希望这有帮助。


0
投票
在最近的

jest

 版本(>28)上,您只需安装 
jest-environment-jsdom
 并更改测试环境。

在package.json中

"jest-environment-jsdom": "^29.7.0",
然后是 jest 配置文件中的环境

testEnvironment: 'jsdom',
或者在文件顶部添加 

@jest-environment

 文档块以用于该文件中的所有测试:

/** * @jest-environment jsdom */

https://jestjs.io/docs/configuration#testenvironment-string

© www.soinside.com 2019 - 2024. All rights reserved.