gpt4 book ai didi

javascript - 开 Jest 比较对象。字符串

转载 作者:行者123 更新时间:2023-12-04 10:45:46 25 4
gpt4 key购买 nike

我在开 Jest 中收到了这个结果

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) .这将检查对象是否与预期的结构和值匹配(执行深度比较)。

jest documentation

Use .toMatchObject to check that a JavaScript object matches a subset of the properties of an object. It will match received objects with properties that are not in the expected object.



因此,您的代码可能会如下所示:

expect(result).toMatchObject({
partyRoleIdentifier: {
internalEmployeeIdentifier: {
id: "id-modified"
}
}
})

关于javascript - 开 Jest 比较对象。字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59717495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com