Dan*_*rín 2 javascript unit-testing domparser jestjs
我有一个使用 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;
};
Run Code Online (Sandbox Code Playgroud)
问题是:当我尝试使用 Jest 进行单元测试时,此函数window.DOMParser未定义。测试很简单:
expect(x2js.parseXmlString(xmlDocStr)).toMatchObject(expectedObject);
Run Code Online (Sandbox Code Playgroud)
有什么办法可以从 Jest 单元测试中使用 DOMParser?
你不需要window参考。只需使用new DOMParser().... 确保您有"testEnvironment": "jsdom"Jest 配置(尽管它应该是默认配置)。
我在这里创建了一个例子。https://repl.it/@ChrisPaton/FlusteredNearDecimal
您也很可能需要最新版本的 Jest,因为jsdom仅在 10 月下旬增加了对DOMParser和 的支持XMLSerializer。
更新
Jest 在 v11 以上版本不支持JSDom 。您需要为此配置自定义环境。这是他们文档的链接,这是易于使用的自定义 jsdom 环境的链接。我希望这有帮助。