Прежде всего вы сравниваете строку с объектом (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)
. Это проверяет, соответствует ли объект структуре и значениям ожидаемого (выполняет глубокое сравнение).
Как в Документация шутки
Используйте .toMatchObject
, чтобы проверить, что JavaScript объект соответствует подмножеству свойств объекта. Он будет сопоставлять полученные объекты со свойствами, которых нет в ожидаемом объекте.
Таким образом, в результате ваш код, вероятно, будет выглядеть так:
expect(result).toMatchObject({
partyRoleIdentifier: {
internalEmployeeIdentifier: {
id: "id-modified"
}
}
})