jsdom document.readyState 为只读的解决方法?
Workarounds for jsdom document.readyState being readOnly?
我将 mocha 与 jsdom 一起用于 JavaScript 库的单元测试。库中的模块之一具有不同的行为,具体取决于文档是否准备就绪。为了测试该行为,我需要模拟一个未完全准备好的文档(即 readyState
属性 是 "loading"
)。简单的解决方案
delete document.readyState
document.readyState = 'loading'
// perform tests ...
不起作用,因为 jsdom 将 readyState
属性 视为只读。即使在该代码之后 readyState
仍然是 "complete"
有没有人遇到过任何巧妙的解决此限制的方法?
就像浏览器一样,您不能删除或设置document.readyState
。就像在浏览器中一样,您可以通过重新定义来更改 getter returns 的内容:
Object.defineProperty(document, "readyState", {
get() { return "loading"; }
});
我将 mocha 与 jsdom 一起用于 JavaScript 库的单元测试。库中的模块之一具有不同的行为,具体取决于文档是否准备就绪。为了测试该行为,我需要模拟一个未完全准备好的文档(即 readyState
属性 是 "loading"
)。简单的解决方案
delete document.readyState
document.readyState = 'loading'
// perform tests ...
不起作用,因为 jsdom 将 readyState
属性 视为只读。即使在该代码之后 readyState
仍然是 "complete"
有没有人遇到过任何巧妙的解决此限制的方法?
就像浏览器一样,您不能删除或设置document.readyState
。就像在浏览器中一样,您可以通过重新定义来更改 getter returns 的内容:
Object.defineProperty(document, "readyState", {
get() { return "loading"; }
});