jsdom document.readyState的解决方法是readOnly吗?

时间:2016-05-05 19:43:33

标签: jsdom readystate

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

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

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

有没有人遇到过这种限制的任何聪明的解决方法?

1 个答案:

答案 0 :(得分:3)

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

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