Как заглушить класс с помощью Sinon.js

Я пытаюсь написать простой тест для функции, которая вызывает API OVH.

Я не понимаю, моя заглушка sinon.js не " отклоняет" метод requestPromised в ovh api. Заглушка sinon.js работает по-разному с объектом класса?

Моя функция (myOvhApi.js):

const ovh = require('ovh')({
  endpoint: 'Endpoint',
  appKey: 'AppKey',
  appSecret: 'appSecret',
  consumerKey: 'ConsumerKey'
})

exports.myFunction = async ( ipAdress, subDomain, ovhDynDNSId ) => {

  try{
    await ovh.requestPromised( 'PUT', `/domain/zone/${zone}/dynHost/record/${ovhDynDNSId}`,
      {
        'ip': ipAdress,
        'subDomain': subDomain
      })
  } catch (error) {
    console.log(error)
  }

  return true
}

Мой тест:

const ovh = require('ovh')
const myOvhApi = require('myOvhApi')

describe('description', () => {

  it('description', async () => {

    const zone = 'mydomain.com'
    const ovhDynDNSId = '12345'
    const ipAdress = '127.0.0.1'
    const subDomain = 'subDomain'

    sinon.stub( ovh, 'requestPromised' ).returns(true)

    const expectation = await myOvhApi.myFunction ( ovhDynDNSId, ipAdress, subDomain )
    expect( expectation ).to.equal(true)
  })
})

Спасибо

1 ответ

По моему опыту заглушка функции без описания всех параметров для функции - заглушка не ловит ее.

Напишите свою заглушку следующим образом:

sinon.stub( ovh, 'requestPromised', (method, uri) => {
      return true
}

Или вы также можете использовать метод callfake от sinon.

Другие вопросы по тегам