具有类和其他属性的模拟模块

时间:2018-12-18 23:00:10

标签: unit-testing twilio jestjs

我正在尝试模拟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 :(得分:0)

这里是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;
);

让我知道是否有帮助。