Макет модулей, который имеет класс и другие атрибуты - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь издеваться над twilio модулем, но это боль.Я новичок в Jest и читаю документы, но не ясно, как мне издеваться над классом и типом.

Это код, который я пытаюсь смоделировать:

const Twilio = require('twilio')
const client = new Twilio('sid', 'auth')
const response = new Twilio.twiml.VoiceResponse()

У части конструктора new Twilio все в порядке:

jest.mock('twilio', () => class {
  constructor (accountSid, authToken) {
    this.conferences = {
      list () {
        return mockTwilioListConferences()
      }
    }
  }
})

Но как можноЯ издеваюсь над партией new Twilio.twiml.VoiceResponse()?

1 Ответ

0 голосов
/ 20 декабря 2018

Разработчик Twilio здесь.

Отказ от ответственности, я не пробовал этого, но вот как я считаю, это работает.

Свойство twiml в классе Twilio простоэто собственность.В своем макете вы мгновенно возвращаете новый анонимный класс, но если вы добавите свойство к самому классу до того, как вернетесь, вы обнаружите, что оно является частью вашего макета.

Например:

jest.mock('twilio', () => {
  const mockClass = class {
    constructor (accountSid, authToken) {
      this.conferences = {
        list () {
          return mockTwilioListConferences()
        }
      }
    }
  }
  mockClass.twiml = {
    // complete your mock implementation here
  }
  return mockClass;
);

Дайте мне знать, поможет ли это вообще.

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