Javascript 如何使附加到全局的属性与sinon正确连接?

Javascript 如何使附加到全局的属性与sinon正确连接?,javascript,mocha.js,sequelize.js,sinon,stub,Javascript,Mocha.js,Sequelize.js,Sinon,Stub,我有一个helper.js,在测试之前加载: before(async function() { this.timeout(30000) global.db = require(`${process.cwd()}/models`)() ... 那么在我的测试中,我有: describe.only('Phone Library', () => { let updateCallSpy beforeEach(() => { sino

我有一个
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模型)


我相信这是非常明显的,所以任何指点都将不胜感激。谢谢。

sequelize模型方法由sequelize核心定义为原型

以下几点应该有效

updateCallSpy = sinon.stub(global.db.models.Call.prototype, 'update').resolves(true)
您还可以创建存根实例:

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

我尝试了
updateCallSpy=sinon.stub(global.db.models.Call.prototype,'update')。解析(true)
。还是没有骰子!您使用的是哪个sequelize版本?