【问题标题】:Workarounds for jsdom document.readyState being readOnly?jsdom document.readyState 的解决方法是只读的?
【发布时间】:2016-05-05 19:43:33
【问题描述】:

我正在使用 mocha 和 jsdom 对 JavaScript 库进行单元测试。库中的一个模块具有不同的行为,具体取决于文档是否准备好。为了测试这种行为,我需要模拟一个尚未完全准备好的文档(即它的readyState 属性是"loading")。简单的解决方案

delete document.readyState
document.readyState = 'loading'
// perform tests ...

不起作用,因为 jsdom 将 readyState 属性视为只读。即使在该代码之后,readyState 仍然是"complete"

有没有人为这个限制找到任何聪明的解决方法?

【问题讨论】:

    标签: jsdom readystate


    【解决方案1】:

    就像浏览器一样,您不能删除或设置document.readyState。就像在浏览器中一样,您可以通过重新定义 getter 来更改它返回的内容:

    Object.defineProperty(document, "readyState", {
      get() { return "loading"; }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多