如何用Jest测试含UUID键的对象值中1和2各恰好出现两次?
测试UUID键对象的完整性与值分布
假设我们有一个键由UUID生成的对象,结构如下:
const mapper: {[k: string]: string} = {'id1': '1', 'id2': '2', 'id3': '1', 'id4': '2'}
需要完成三项核心测试:
- 验证对象包含4个ID
- 确保每个ID的值只能是
'1'或'2' - 确认值
'1'和'2'恰好各出现两次
完整测试代码实现
// 验证ID总数为4 expect(Object.keys(mapper)).toHaveLength(4); // 校验每个值的合法性 Object.values(mapper).forEach(value => { expect(['1', '2']).toContain(value); }); // 统计并验证值的出现次数 const valueCounts = Object.values(mapper).reduce((counts, value) => { counts[value] = (counts[value] || 0) + 1; return counts; }, {} as {[key: string]: number}); expect(valueCounts['1']).toBe(2); expect(valueCounts['2']).toBe(2);
各测试项说明
- ID数量验证:通过
Object.keys()获取所有键,使用toHaveLength断言直接判断数量是否符合预期。 - 值范围校验:遍历对象所有值,确保每个值都属于允许的集合,避免出现非法值。
- 值分布统计:利用
reduce方法统计每个值的出现次数,再分别断言'1'和'2'的计数为2,保证分布符合要求。
内容的提问来源于stack exchange,提问作者Osman Mamun
相关产品推荐
相关产品推荐

