You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Jest测试验证值是否存在于枚举中?

解决Jest验证值是否存在于枚举中的问题

你的测试用例问题出在:toContain方法的使用场景不对——它是用来检查数组是否包含指定元素,或字符串是否包含子串,但你把整个枚举对象MEM_STATUS传进去,而实际返回的是单个字符串值'live',自然匹配失败。

要验证返回值是否是MEM_STATUS枚举的有效值,你需要先提取枚举的所有值,再做检查,以下是两种常用写法:

写法一:用Object.values提取枚举值,结合toContain

test('Should be valid', () => {
  const actualStatus = TestCasesExport.userAccStatus(ACC_STATUS.LIVE);
  // 提取MEM_STATUS的所有值组成数组,检查是否包含实际返回值
  expect(Object.values(MEM_STATUS)).toContain(actualStatus);
});

写法二:直接用数组includes方法结合toBe(true)

如果你更习惯直接判断布尔值,也可以这么写:

test('Should be valid', () => {
  const actualStatus = TestCasesExport.userAccStatus(ACC_STATUS.LIVE);
  expect(Object.values(MEM_STATUS).includes(actualStatus)).toBe(true);
});

补充说明

  • Object.values(MEM_STATUS)会把枚举对象的所有值(比如"live"、"inactive"等)转换成一个数组,这样就能用数组的包含检查方法了。
  • 如果你还需要验证返回值对应的键也存在于枚举中,可以用Object.keys(MEM_STATUS)提取键做类似检查。

内容的提问来源于stack exchange,提问作者Chaudhry Talha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 19:25:29