我有一个如下所示的模块:const config = require('config')const isActive = config.get('isActive')const infoMap = new Map()const set = (key, value) => { infoMap.set(key, value)}const get = (key) => infoMap.get(key)module.exports={set, get} 以及我测试这些东西的测试:let getlet setbeforeEach(() => { jest.mock('config') mockIsActive = require('config').get.mockReturnValueOnce(true) get = require('../cache/mymap').get set = require('../cache/mymap').set})describe('The map', () => { describe('when data is added', () => { set('testKey', "testData") it('should contains the data', async () => { const dataFromMap = get('testKey') assert("testData", dataFromMap) }) })})当使用以下命令调用时会失败set:set is not a function奇怪的是,它get运行起来没有问题。
1 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
必须在函数set内部调用该函数it,否则尚未定义:
describe('when data is added', () => {
it('should contains the data', async () => {
set('testKey', "testData")
const dataFromMap = get('testKey')
assert("testData", dataFromMap)
})
})
beforeEach在每个 it 函数之前运行,而不是在描述之前运行。这也是为什么get在您的示例中起作用的原因 - 它位于it函数内部。
添加回答
举报
0/150
提交
取消