Я пытаюсь протестировать функцию, имеющую ссылку на пользовательский модуль узла, которую мне нужно смоделировать / заглушку, поскольку она не является нативной для узла.
Модуль называется 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: decoder.addOperation не является функцией
Если бы кто-то мог опубликовать, как должен проводиться тест, это было бы здорово.