我有一个 JSON 对象,其地图如下:
{"name": "Bertha", [["id", "123"], ["status", "active"]]}
请注意,我表示地图就像在打字稿中表示一样,但我不知道它将如何在底层 Jest 框架中表示。当我使用 isEqual([["id", "123"....]) 语法时,它失败了。据报道,它收到了:
Map {"id" => "123", "status" => "active"}
我觉得这很令人困惑。
如何使用 Jest 测试键值对?
这个
[["id", "123"], ["status", "active"]]
是数组的数组,而不是Map。
这个
Map {"id" => "123", "status" => "active"}
是 Map 的常规语法,可以通过将上面的数组数组传递到
new Map
来构造。
因为看起来你实际上拥有的是一个映射,而不是一个数组数组 - 为了测试映射的键值是否如上,我将获取映射的条目(将其从映射返回到数组)数组)。然后可以使用
toEqual
深入检查该结构。
const entries = [...map.entries()];
expect(entries).toEqual([["id", "123"], ["status", "active"]]);
另一种选择(如果地图中有很多项目,则不太可持续)是单独检查每个项目。
expect(map.get('id')).toBe(123);
expect(map.get('status')).toBe('active');