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

Angular测试报错:‘User[]’无法赋值给‘Expected<User>’求助

问题解决:类型不匹配与断言方法错误

错误根源

  1. 类型不匹配:测试中user被定义为User[]数组类型,但getUserById方法返回的是单个User对象的Observable,导致expect(res).toBe(user)时出现类型赋值错误。
  2. 断言方法误用:toBe用于比较引用类型的内存地址,而你需要比较的是对象的内容,应该使用toEqual做深度内容比对。

修改步骤

1. 修正user变量类型

将测试里的数组类型改为单个User对象:

const user: User = {
  "id": 23556,
  "name": "unique Ramakrishna",
  "email": "new.ramakrishna@15ce.com",
  "gender": "male",
  "status": "active"
}

2. 替换断言方法

把toBe换成toEqual,确保比对对象的实际内容:

userService.getUserById(id).subscribe((res) => {
  expect(res).toEqual(user);
});

修改后的完整测试代码

it('should call getUsersById', () => {
  const user: User = {
    "id": 23556,
    "name": "unique Ramakrishna",
    "email": "new.ramakrishna@15ce.com",
    "gender": "male",
    "status": "active"
  }

  userService.APIkey = '89668b2e3000a3aab5860410aa59fdc6c98977afa03a15d19df6be0e22f91650'
  let APIkey = userService.APIkey
  let url = 'https://gorest.co.in/public/v2/users'
  let id = 23556
  
  userService.getUserById(id).subscribe((res) => {
    expect(res).toEqual(user);
  });

  const req = httpTestingController.expectOne({
    method: 'GET',
    url: `${url}/${id}?access-token=${APIkey}`,
  });

  req.flush(user);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 02:10:39