如何排除random_id属性比较两个JS对象?尝试chai-exclude未果
解决chai-exclude排除属性失败的问题
先修正基础语法错误
你定义的object_1有两处问题:一是属性结尾用了分号,JS对象属性应该用逗号分隔;二是name和surname没加引号,属于未定义变量,而object_2里是字符串字面量,这俩属性值本身就不相等,就算排除random_id也没法匹配。先把对象修正成正确格式:
var object_1 = { random_id: 'random_id_1', name: 'name', surname: 'surname' } var object_2 = { random_id: 'random_id_2', name: 'name', surname: 'surname' }
确认chai-exclude插件已正确注册
得先确保你装了插件,并且在测试代码里完成注册:
- 安装插件:
npm install chai-exclude --save-dev - 在测试文件中引入并注册:
const chai = require('chai'); const chaiExclude = require('chai-exclude'); chai.use(chaiExclude); // 这步必须做,不然用不了excluding方法 const expect = chai.expect;
正确编写断言
如果上面的步骤都搞定了,你的断言代码应该就能正常运行。要是还是不行,试试调整写法顺序:
expect(object_1).to.excluding('random_id').deep.equal(object_2);
其他排查点
- 检查chai和chai-exclude的版本是否兼容,比如chai 4.x搭配chai-exclude 2.x是没问题的
- 如果是嵌套对象里的属性需要排除,得用
excludingEvery,但你这是顶级属性,用excluding就足够
内容的提问来源于stack exchange,提问作者Taron
相关产品推荐
相关产品推荐

