jsdom - jsdom document.readyState 的解决方法是只读的?

标签 jsdom readystate

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

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

不起作用,因为 jsdom 处理 readyState属性为只读。即使在该代码之后 readyState遗骸 "complete"
有没有人遇到过任何聪明的解决这个限制的方法?

最佳答案

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

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

关于jsdom - jsdom document.readyState 的解决方法是只读的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37059010/

相关文章:

javascript - Opera HTML5 视频 ReadyState == 2 而不是等于 4

javascript - Ajax onreadystatechange 函数 readyState

reactjs - 如何测试动态页面标题?

proxy - create-react-app:使用代理进行 Jest 测试

javascript - 为什么我的测试在我的( enzyme 模拟事件)同步事件处理程序之前完成?

javascript - 为什么我的 readState 逻辑中 document.body 为 null?

javascript - XMLHttpRequest 中的不同就绪状态是什么意思,我该如何使用它们?

jQuery $.ajax 和 readStates

javascript - 确保为 enzyme 加载 dom 环境

node.js - 具有完整 Sizzle 支持的 JSDom 替代方案?