Используя Sequelize в коде, я не могу заглушить важные его внутренние функции, такие как .save (), .scope () и т. Д. Похоже, вложение не работает.
КакВ рамках модульного тестирования тесты завершаются неудачно без надлежащей обработки этих функций, говоря: TypeError: Cannot read property 'returns' of undefined
При выполнении этой строки выдается ошибка:
subscription.save()
Реализациязаглушка:
const deleteSubscription = async (subscriptionId) => {
const ts = Math.floor(Date.now() / 1000)
const subscription = await sql.Subscriptions.findByPk(subscriptionId);
if (subscription == null) {
throw new Error('Subscription not found', 'subscription_not_found')
}
subscription.deletedAt = ts
subscription.save()
return subscription
}
Модульный тест:
it('deleteSubscription succeeds', async () => {
subscriptionsSqlStub.save.returns({})
subscriptionsSqlStub.findByPk.returns({
id: 1
})
const subscription = await subscriptions.deleteSubscription(subscriptionsSqlStub)
expect(subscription).to.have.deep.property('id', 1)
sinon.assert.calledOnce(subscriptionsSqlStub.findByPk)
subscriptionsSqlStub.findByPk.resetHistory()
})
Как мне обратиться к внутренним / вложенным функциям?