使用 Jest 测试 DOMParser

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?

Chr*_*ton 7

你不需要window参考。只需使用new DOMParser().... 确保您有"testEnvironment": "jsdom"Jest 配置(尽管它应该是默认配置)。

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

您也很可能需要最新版本的 Jest,因为jsdom仅在 10 月下旬增加了DOMParser和 的支持XMLSerializer

更新

Jest 在 v11 以上版本不支持JSDom 。您需要为此配置自定义环境。这是他们文档的链接,这是易于使用的自定义 jsdom 环境的链接。我希望这有帮助。