我正在使用 mocha 和 jsdom 对 JavaScript 库进行单元测试。库中的模块之一根据文档是否准备好而具有不同的行为。为了测试该行为,我需要模拟一个尚未完全就绪的文档(即它的readyState
属性是"loading"
)。简单的解决方案
delete document.readyState
document.readyState = 'loading'
// perform tests ...
Run Code Online (Sandbox Code Playgroud)
不起作用,因为 jsdom 将该readyState
属性视为只读。即使在该代码之后readyState
仍然存在"complete"
有没有人遇到过针对此限制的任何巧妙的解决方法?
就像浏览器一样,您不能删除或设置document.readyState
. 就像在浏览器中一样,您可以通过重新定义 getter 来更改它:
Object.defineProperty(document, "readyState", {
get() { return "loading"; }
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
913 次 |
最近记录: |