首页 > 解决方案 > 如何模拟模块常量映射?

问题描述

在编写测试时,假设需要模拟模块级别映射。我如何模拟不cacheMap使用 jest 导出的测试?

const cacheMap = new Map<string, string>();
export function add(key: string, value: string) {
  cacheMap.set(key, value);
}
export function remove(key: string) {
  cacheMap.delete(key);
}

标签: javascripttypescriptjestjs

解决方案


您添加一个具有默认值的可选参数,如下所示。当你在测试时,你注入你想要的地图,覆盖全局地图。

const cacheMap = new Map<string, string>();
export function add(key: string, value: string, map: Map = cacheMap) {
  cacheMap.set(key, value);
}
export function remove(key: string, map: Map = cacheMap) {
  cacheMap.delete(key);
}

test('add', () => {
  const map = new Map<string, string>()
  add('a', 'b', map);
  expect(map.get('a')).toBe('b')
})


推荐阅读