首页 > 解决方案 > 它有一个像 toEqual 一样工作的笑话匹配器,但将 null 和 undefined 视为相等的值?

问题描述

我有一个 API,它不会忽略具有“空”(null、none、nil)值的字段的 JSON 序列化,并将它们全部返回为"fieldName": null. 我在测试代码(TypeScript)中输入了 DTO,我想将这些字段设为可选(?),并在许多地方将它们设为未定义。不幸的是(对我来说)开玩笑的 toEqual() 将 undefined (测试代码中的值)和 null (来自 API 的值)视为不同的值。我目前的解决方案是使用联合类型string | null,但它非常冗长,因为我必须始终初始化这些字段。我检查了 jest 的参考资料,但没有找到“现成的”解决方案。那么,创建自定义匹配器是解决我的问题的唯一方法吗?注意:我无法更改 API 中的序列化策略。

标签: typescriptjestjs

解决方案


expect(null).toBe(undefined)失败!

基本上你所拥有的是,有时在评估一个对象后,你null在一侧和另一侧undefined都有

我尝试使用其他开玩笑的方法,toEqual但没有奏效。

我的解决方案

expect(null == undefined).toBe(true)


推荐阅读