超全模态模型 × Harness 升级,升级解锁 ArkClaw,最新支持 DeepSeek-V4 系列与 GLM-5.1
测试依赖全局document和window的blurActiveElement方法时,直接给globalThis.window赋值触发错误:
document
window
blurActiveElement
globalThis.window
TypeError: Cannot set property window of # which has only a getter 原因是AVA运行环境中globalThis.window为只读属性,无法直接覆盖赋值。解决方案 #改用JSDOM提供的globalize()方法,自动将DOM环境的全局变量(如window、document、HTMLElement等)挂载到Node.js的globalThis上,无需手动逐个赋值。修改后的完整测试代码:import test from 'ava'; import { JSDOM } from 'jsdom'; import { blurActiveElement } from '.'; test.before(() => { const dom = new JSDOM('<!DOCTYPE html><html><head></head><body><div id="my-element-id"></div></body></html>'); // 自动挂载DOM环境全局变量到globalThis dom.window.globalize(); }); test('blurActiveElement 可正确失焦当前活跃元素', (t) => { const el = document.getElementById('my-element-id'); el.focus(); t.is(document.activeElement, el, '元素应成为当前活跃元素'); blurActiveElement(); t.not(document.activeElement, el, '调用方法后元素不再是活跃元素'); }); 补充说明 #globalize()方法会自动处理所有DOM相关全局变量,无需手动设置document、HTMLElement等属性;给断言添加描述文本,可提升测试报告的可读性。内容的提问来源于stack exchange,提问作者ar099968
原因是AVA运行环境中globalThis.window为只读属性,无法直接覆盖赋值。
改用JSDOM提供的globalize()方法,自动将DOM环境的全局变量(如window、document、HTMLElement等)挂载到Node.js的globalThis上,无需手动逐个赋值。
globalize()
HTMLElement
globalThis
修改后的完整测试代码:
import test from 'ava'; import { JSDOM } from 'jsdom'; import { blurActiveElement } from '.'; test.before(() => { const dom = new JSDOM('<!DOCTYPE html><html><head></head><body><div id="my-element-id"></div></body></html>'); // 自动挂载DOM环境全局变量到globalThis dom.window.globalize(); }); test('blurActiveElement 可正确失焦当前活跃元素', (t) => { const el = document.getElementById('my-element-id'); el.focus(); t.is(document.activeElement, el, '元素应成为当前活跃元素'); blurActiveElement(); t.not(document.activeElement, el, '调用方法后元素不再是活跃元素'); });
内容的提问来源于stack exchange,提问作者ar099968
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起
模型再升级,30秒超长叙事, 模态参考扩容
模型自由,工具不限,最新支持 Deepseek-V4 系列、GLM-5.3 系列
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列
大模型19元起,Al应用9.9元畅享,新人首购爆款尽享优惠