Я пытаюсь выполнить модульное тестирование функции, использующей пакет twilio-node для отправки SMS-сообщений. Функция, которую я пытаюсь протестировать, как для переданных аргументов, так и для вызванных времен, это Twilio.prototype.messages.create
.
sendText.ts
const twilio = new Twilio('ACfakeName', 'SomeAuthToken');
// Need to stub this guy
try {
await twilio.messages.create({body: 'something', to: `1234567890`, from: '1234567890' });
}
catch (e) {
console.log('An error while sending text', e);
}
sendText.spec.ts
twilioCreateStub = sinon.stub(Twilio.prototype.messages, 'create');
it('should call twilio.messages.create() once', async () => {
try {
await sendText();
}
catch (e) {
fail('This should not fail.')
}
expect(twilioCreateStub.callCount).to.equal(1);
});
Запуск его таким образом не проходит тест с callCount
равным 0. Я не уверен, как mocha выполняет их, но похоже, что при неудачном тесте он не отображает никаких журналов. Если я удаляю часть expect
, кажется, что вызывается реальная twilio.messages.create
, так как я получаю следующие журналы:
An error while sending text { [Error: The requested resource /2010-04-01/Accounts/ACfakeName/Messages.json was not found]
status: 404,
message:
'The requested resource /2010-04-01/Accounts/ACfakeName/Messages.json was not found',
code: 20404,
moreInfo: 'https://www.twilio.com/docs/errors/20404',
detail: undefined }
Я также пробовал sinon.createStubInstance
и имею похожие результаты. Я не вижу признаков того, что я заглушаю глубоко вложенный метод.