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

Jest单元测试中使用三元运算符后toEqual断言失败如何解决

问题原因

你的call函数最终返回的userData固定包含title/url/date/id/email5个字段,当模拟返回的接口数据只有title时,三元运算符会为其他缺失的字段补全默认值(空字符串或空格)。但你的测试用例中expectedResult仅声明了title一个字段,toEqual会做全量深相等校验,字段不匹配就会报错。
如果你去掉三元判断直接返回resp.data,那返回值就和你模拟的resp.data结构完全一致,测试自然通过。

解决方法
  • 方法1:补全测试的预期结构,和实际返回值完全匹配
    修改测试里的expectedResult,补全所有默认字段即可:
const expectedResult = {
    title:"hello",
    url: "",
    date: " ",
    id: "",
    email: ""
}

这样toEqual全量校验就会通过。

  • 方法2:仅校验关心的字段,忽略其余默认字段
    不需要全量匹配的场景下,可以用Jest提供的expect.objectContaining方法,只校验你关注的字段:
// 替换原有的expect语句
expect(response).toEqual(expect.objectContaining({
  title: "hello"
}))

这种写法不需要声明其余默认字段,只要返回值包含你指定的字段和对应值就会校验通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:27:03