You need to enable JavaScript to run this app. 单元测试验证方法失败返回错误提示时出现Expected Object断言报错如何解决
优惠活动
大模型
产品
解决方案
定价
更多

单元测试验证方法失败返回错误提示时出现Expected Object断言报错如何解决

报错原因定位

这个报错的核心是断言比对的两个值结构、类型不匹配,根源在被测方法的错误抛出逻辑多嵌套了一层结构,和测试的预期对不上。

完整问题链路

  1. 测试里mock的接口返回值结构是{ error: { message: 'error message' } }
  2. 被测方法的switchMap分支检测到返回值包含error后,执行了抛错逻辑:
    return throwError({ message: response.error });
    
    这里的response.error本身就是{ message: 'error message' }对象,最终实际抛出的错误对象结构为:
    {
      message: {
        message: 'error message'
      }
    }
    
  3. 测试的错误回调拿到这个对象后,执行expect(error.message).toEqual('error message')时,取到的error.message是嵌套的整个对象,并不是你预期的纯字符串'error message',自然会触发“期望对象等于字符串”的报错。

修正方案

根据你实际的错误封装逻辑二选一调整即可:

  • 如果需要统一抛出带message属性的错误结构,只需要修正取值层级,拿到嵌套的纯文本错误信息:
    // 替换原抛错的代码行
    return throwError({ message: response.error.message });
    
    调整后抛出的error结构为{ message: 'error message' },error.message就是预期的纯字符串,和现有测试断言完全匹配。
  • 如果不需要额外包装错误,直接把接口返回的error原样抛出即可:
    // 替换原抛错的代码行
    return throwError(response.error);
    
    这种情况下抛出的error本身就是{ message: 'error message' }结构,现有测试里的expect(error.message).toEqual('error message')也可以正常通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 00:15:03