【发布时间】:2020-02-02 02:40:04
【问题描述】:
我正在尝试模拟 id 生成功能。
我的generateIdsSet.js 文件的内容是:
import nanoid from 'nanoid/generate'
const generateId = (): string => {
return nanoid('1234567890abcdefghijklmnopqrstuvwxyz', 5)
}
export const generateIdsSet = (setLength) => {
const setIds = []
for (let i = 0; i < setLength; i++) {
setIds.push(generateId())
}
return setIds
}
在generateIdsSet 的模拟文件generateIdsSet.spec.js 中,我需要创建可预测的ID 数组。我想出了那个实现:
import { generateIdsSet } from './generateIdsSet.js'
jest.mock('nanoid/generate', () => {
let value = 0
return () => String(++value)
})
describe('generateIdsSet', () => {
it('One element', () => {
expect(generateIdsSet(1)).toEqual(['1'])
})
it('Four elements', () => {
expect(generateIdsSet(4)).toEqual(['1', '2', '3', '4'])
})
....
})
一切正常,只是在每个测试计数器上都没有重置为 1,并且每次调用都保持递增。
也许这是我明显想念的东西,但我无法弄清楚。我将不胜感激。
【问题讨论】:
标签: javascript unit-testing testing ecmascript-6 jestjs