我收到这个笑话
result1 -> {
"partyRoleIdentifier": {
"internalEmployeeIdentifier": {
"id": "id-modified"
}
}
}
我进行比较:
expect(result).toBe('{\"partyRoleIdentifier\": {\"internalEmployeeIdentifier\": {\"id\": \"id-modified\"}}}');
但是我得到了这个结果:
Expected: "{\"partyRoleIdentifier\": {\"internalEmployeeIdentifier\": {\"id\": \"id-modified\"}}}"
Received: {"partyRoleIdentifier": {"internalEmployeeIdentifier": {"id": "id-modified"}}}
result
是JS对象,而expected
是字符串)。如果您不想将JSON字符串转换为对象,则需要使用JSON.parse函数。let strObj = "{\"foo\":\"bar\"}"
// you can't access object properties from string:
strObj.foo // undefined
let obj = {"foo":"bar"}
obj.foo // "bar"
let parsed = JSON.parse(strObj)
parsed.foo // "bar"
第二,因为在JS对象中通过引用进行比较,所以这段代码正在比较预期引用和接收到的引用是否指向同一对象实例
let a = {foo: "bar"} let b = {foo: "bar"} a == b // false
在您的情况下,请使用expect(result).toMatchObject(expected)
。这将检查对象是否与预期的结构和值匹配(进行深度比较)。与[C0中相同]
使用jest documentation检查JavaScript对象是否与对象属性的子集匹配。它将匹配接收到的对象,其属性不在预期对象中。所以结果您的代码可能看起来像这样:
.toMatchObject