用 jest 测试模块功能

我有一个如下所示的模块:


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 get

let set


beforeEach(() => {

  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运行起来没有问题。


慕运维8079593
浏览 68回答 1
1回答

慕尼黑8549860

必须在函数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函数内部。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript