Как заглушить или смоделировать другой модуль узла, который требуется в функции, которую я пытаюсь проверить - PullRequest
1 голос
/ 15 июня 2019

Я пытаюсь протестировать функцию, имеющую ссылку на пользовательский модуль узла, которую мне нужно смоделировать / заглушку, поскольку она не является нативной для узла.

Модуль называется 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 не является функцией

Если бы кто-то мог опубликовать, как должен проводиться тест, это было бы здорово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...