You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS实现类Lodash的without方法后assertEqual测试失败原因排查

问题根因

你自定义的assertEqual函数使用===严格相等运算符做判断,而数组属于JavaScript引用类型,without返回的新数组和测试用的预期数组[2, 3]是两个独立的内存对象,哪怕内部元素完全一致,===比较的结果也会是false,这就是测试失败的直接原因。

解决方案

你已经实现了专门用于数组内容对比的eqArrays函数,直接复用该函数调整断言逻辑即可,有两种可选实现方式:

方案1:直接修改现有测试语句

把最后一行测试代码替换为以下内容,用eqArrays的返回值和true做对比:

assertEqual(eqArrays(without([1, 2, 3], [1]), [2, 3]), true);

方案2:封装专用的数组断言函数

新增一个数组断言工具,后续测试数组时直接调用即可,代码更简洁:

const assertArraysEqual = function(actual, expected) {
  if (eqArrays(actual, expected)) {
    console.log(`✅✅✅ Assertion Passed: [${actual}] === [${expected}]`);
  } else {
    console.log(`🛑🛑🛑 Assertion Failed: [${actual}] !== [${expected}]`);
  }
};

// 调用示例
assertArraysEqual(without([1, 2, 3], [1]), [2, 3]);

修改完成后重新运行代码即可看到测试通过的提示。

内容的提问来源于stack exchange,提问作者Abubakar Oluyinka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 09:27:02