Как мне правильно привязать свойство к глобальному заглушке с помощью sinon? - PullRequest
0 голосов
/ 20 октября 2019

У меня есть helper.js, который загружается до моих тестов:

before(async function() {
    this.timeout(30000)
    global.db = require(`${process.cwd()}/models`)()
    ...

Затем в моем тесте у меня есть:

describe.only('Phone Library', () => {
    let updateCallSpy
    beforeEach(() => {
        sinon.stub(twilioClient.calls, 'create').resolves({})
        updateCallSpy = sinon.stub(global.db.models.Call, 'update').resolves(true)
            // sinon.stub(global.db.models.Conversation, 'update').resolves({})
    })

Заглушки twilioClient.calls.create правильно. Но global.db.models.Call.update нет.

В моем реальном коде я использую его следующим образом:

        await global.db.models.Call.update({ status: newCallStatus }, { where: { id: foundConversation.Call.id } })

Когда я console.log(global.db.models.Call), он просто выводит Call. Тем не менее, функция .update существует и выполняет то, что должна делать (модель Sequelize, которая обновляет).

Я уверен, что это что-то ужасно очевидное, поэтому любые указатели будут очень благодарны. Благодаря.

1 Ответ

1 голос
/ 23 октября 2019

Методы Sequelize Model определяются как prototype ядром Sequelize.

Должно работать следующее

updateCallSpy = sinon.stub(global.db.models.Call.prototype, 'update').resolves(true)

Вы также можете создать экземпляр заглушки:

updateCallStubInstance = sinon.createStubInstance(global.db.models.Call)
...