我正在进行API调用,在响应中返回JSON结构:
{
"tags": [],
"scope": "all",
"tenant_id": "0",
"version": 1,
"type": "tenant",
"description": "",
"name": "3",
"body":{
"settings": {},
"tenant_id": "2",
}
}
当我想要比较时
expect(res.body.name).toBe(3);
或
expect(res.body.name).toEqual(3);
失败并发出以下错误:
Expected '3' to be 3.
或
Expected '3' to Equal 3.
答案 0 :(得分:4)
您将字符串'3'等同于数字3,这就是失败的原因。您可以使用以下代码:
expect(res.body.name).toEqual("3");
OR
expect(res.body.name).toBe("3");
答案 1 :(得分:1)
"name": "3",
听起来好像expect(res.body.name).toEqual('3');
应该有效,因为“3”是一个字符串。
同样如此:
expect(res.body.name).toBe('3');
如果您的代码样式更喜欢===检查==左
expect(Number(res.body.name)).toEqual(3);
如果您需要预期数字3而不管3的确切类型。
如果api响应为"name": 3,
,那么您的测试将会很好,但似乎实现已将其存储为字符串。如果需要是一个数字,请提交错误,将您的期望也设置为字符串,或者在断言之前将api响应转换为数字。
我认为您不需要字面'3'
,只需要3
字符串而不是3
数字。