如何使用Sinon处理​​NodeJS的内置函数?

时间:2019-07-23 11:18:07

标签: unit-testing chai sinon sinon-chai

使用Sinon存根,我已经使用传统的存根语法成功在项目中添加了函数:

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

现在,我正在尝试对NodeJS的内置函数( findIndex,indexOf等。)进行存根测试,但没有成功,因为应该将其与Sinon存根的第一个参数一起传递()函数调用,这是NodeJS的核心函数,需要传递什么?

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

由于尝试传递一些可能正确地针对它的参数而导致此错误,因为它无法成功挂载:

TypeError: Cannot read property 'returns' of undefined

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

1 个答案:

答案 0 :(得分:0)

所以最终我使用以下代码使它可以工作(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)