我正在尝试测试一个引用自定义节点模块的函数,我需要对它进行模拟/存根,因为它不是节点本身的。
该模块称为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不是函数
如果有人可以发布如何设置测试,那就太好了。