【问题标题】:How to address NodeJS's built-in functions with Sinon?如何用 Sinon 解决 NodeJS 的内置函数?
【发布时间】:2019-07-23 11:18:07
【问题描述】:

使用 Sinon 存根,我已经成功地将项目中的函数存根,使用传统的存根语法:

const permissionsStub = sinon.stub(invitation, 'update')
sinon.assert.calledOnce(permissionsStub)

现在我正在尝试存根 NodeJS 的内置函数(findIndex、indexOf 等。),但没有成功,因为它应该与 Sinon 存根的第一个参数中的() 函数调用,作为NodeJS的核心函数,需要传递什么?

我尝试过创建一个空存根,然后将其直接分配给代码中的函数,但我认为有一种更简单的方法可以尝试和 spy/stub/mock 内置 NodeJS 函数。

我通过尝试传递一些可能正确定位它的参数而收到此错误,因为它没有成功安装:

TypeError: Cannot read property 'returns' of undefined

如何使用 Chai 和 Sinon 以更简单的方式定位这些函数?

【问题讨论】:

    标签: unit-testing chai sinon sinon-chai


    【解决方案1】:

    所以最终我使用以下代码让它工作(rewire 被用于获取文件的内部未导出函数):

    const permissionIndex = invitation.__get__('permissionIndex')
    permissionsStub.findIndex = () => {
        return { id: 1 }
    }
    expect(permissionIndex(1, permissionsStub)).to.be.an('object')
    expect(permissionIndex(1, permissionsStub)).to.have.deep.property('id', 1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-31
      • 2015-10-20
      • 1970-01-01
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多