如何存根或模拟我要测试的功能中所需的另一个节点模块

时间:2019-06-14 23:27:13

标签: node.js mocha sinon

我正在尝试测试一个引用自定义节点模块的函数,我需要对它进行模拟/存根,因为它不是节点本身的。

该模块称为jwt,我想对此进行模拟并对.addOperation和.decode方法进行存根,以便可以测试if else块。

这是功能。

static verifyTokenAndExpiry (jwt, jwk) {
    return new Promise(function (resolve, reject) {
      let jwtLib = require('jwt')
      let decoder = new jwtLib.Decoder(jwt)
      decoder.addOperation('verify', jwk)
        .addOperation({ validateDataType: false, validateAudience: false, validateExpiration: true, validateNotBefore: true }, 'validate')
        .decode(function (error, claims) {
          if (error) {
            console.error('Failed to decode token, not a valid encoded format or expired: ', error)
            reject(error)
          } else {
            console.trace('Token was decoded and passed expiry check: ', claims)
            resolve(true)
         }
       })
    })
  }

这是测试的开始。

describe('CommonLib - verifyTokenAndExpiry', () => {
  it('Should return true', async () => {
    let decoder = {
      addOperation: ''
    }

    mock('jwt', { Decoder: sinon.stub(decoder, 'addOperation').callsFake(function fakeFn () {})

  })
  //  sinon.stub(decoder,"addOperation").callsFake(function fakeFn () {})
    let response = await CommonLib.verifyTokenAndExpiry('', '')
  })

})

这是我当前遇到的错误。

TypeError:解码器.addOperation不是函数

如果有人可以发布如何设置测试,那就太好了。

0 个答案:

没有答案