JSON对象的预期条件

时间:2016-08-11 18:11:26

标签: protractor

我正在进行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.

2 个答案:

答案 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数字。