gpt4 book ai didi

javascript - 如何在 mocha 单元测试中模拟 document.evaluate() 和 XPathResult?

转载 作者:行者123 更新时间:2023-12-04 10:34:51 25 4
gpt4 key购买 nike

我有以下 JavaScript 类包装 document.evaluate()使用 XPath 选择 DOM 元素:

'use strict'
Object.defineProperty(exports, '__esModule', { value: true })
class ElementByXPath {
constructor(elementXPath) {
this.elementXPath = elementXPath
}
element(document) {
return document.evaluate(
this.elementXPath,
document.documentElement,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null,
).singleNodeValue
}
}
exports.ElementByXPath = ElementByXPath

以下测试写于 mocha应验证方法 element() :
describe('ElementByXPath function test', () => {
it('should return element of given XPath', () => {
const dom = new JSDOM(`<p id = "test-id"/p>`)
const result = new ElementByXpath('//*[@id="test-id"]').element(
dom.window.document,
)

expect(result.tagName).to.equal('P')
})
})

使用 JSDOM我能够模拟 window元素。不幸的是,我无法模拟 XPathResult :
ReferenceError: XPathResult is not defined

有人可能有提示吗?谢谢。

最佳答案

添加 jsdom-global旁边 jsdom (描述 here):

npm i -D jsdom jsdom-global

注册 jsdom-globalmocha执行测试
mocha -r jsdom-global/register test/**/*.test.js

关于javascript - 如何在 mocha 单元测试中模拟 document.evaluate() 和 XPathResult?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60233741/

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