Javascript Chai assert.deepEqual抛出错误“;打字机错误:'的右侧;instanceof';“不是对象”;使用atob时

Javascript Chai assert.deepEqual抛出错误“;打字机错误:'的右侧;instanceof';“不是对象”;使用atob时,javascript,mocha.js,chai,jsdom,Javascript,Mocha.js,Chai,Jsdom,我正在使用Chai和Mocha对我的助手函数运行测试。我使用JSDOM包括atob和btoa。这是我的setup.js文件: const{JSDOM}=require('JSDOM'); const jsdom=新的jsdom(“”); const{window}=jsdom; global.window=窗口; global.document=window.document global.btoa=window.btoa; global.atob=window.atob您的问题是由这样一个事

我正在使用Chai和Mocha对我的助手函数运行测试。我使用JSDOM包括atob和btoa。这是我的setup.js文件:

const{JSDOM}=require('JSDOM');
const jsdom=新的jsdom(“”);
const{window}=jsdom;
global.window=窗口;
global.document=window.document
global.btoa=window.btoa;

global.atob=window.atob您的问题是由这样一个事实引起的,即您只是在节点中模拟DOM环境的一部分。您设置了一些变量,然后停在那里,这样您就得到了一个既不是股票节点环境,也不是DOM环境的东西

chai
使用
deep eql
执行深度比较,而
deep eql
使用名为
type detect
的包执行部分工作<代码>类型检测
执行一项测试,向其指示它正在DOM环境中运行,并最终尝试执行以下操作:

由于您没有将
HTMLElement
窗口复制到
全局
,因此它会失败,并出现错误。您可以通过添加以下内容来修复此问题:

global.HTMLElement = window.HTMLElement;
global.HTMLElement = window.HTMLElement;