如何使用 Sinon 处理 NodeJS 的内置函数?
How to address NodeJS's built-in functions with Sinon?
使用 Sinon 存根,我已经使用传统的存根语法成功地存根了项目中的函数:
const permissionsStub = sinon.stub(invitation, 'update')
sinon.assert.calledOnce(permissionsStub)
现在我正在尝试 Stub NodeJS 的内置函数(findIndex、indexOf 等),但没有成功,因为它应该通过Sinon 的 stub() 函数调用的第一个参数,作为 NodeJS 的核心函数,需要传递什么?
我试过创建一个空存根然后将其直接分配给代码中的函数,但我认为有更简单的方法可以尝试 spy/stub/mock 内置 NodeJS 函数。
我通过尝试传递一些可能正确定位它的参数得到了这个错误,因为它没有成功安装:
TypeError: Cannot read property 'returns' of undefined
如何使用 Chai 和 Sinon 以更简单的方式定位这些函数?
所以最终我使用以下代码让它工作(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)
使用 Sinon 存根,我已经使用传统的存根语法成功地存根了项目中的函数:
const permissionsStub = sinon.stub(invitation, 'update')
sinon.assert.calledOnce(permissionsStub)
现在我正在尝试 Stub NodeJS 的内置函数(findIndex、indexOf 等),但没有成功,因为它应该通过Sinon 的 stub() 函数调用的第一个参数,作为 NodeJS 的核心函数,需要传递什么?
我试过创建一个空存根然后将其直接分配给代码中的函数,但我认为有更简单的方法可以尝试 spy/stub/mock 内置 NodeJS 函数。
我通过尝试传递一些可能正确定位它的参数得到了这个错误,因为它没有成功安装:
TypeError: Cannot read property 'returns' of undefined
如何使用 Chai 和 Sinon 以更简单的方式定位这些函数?
所以最终我使用以下代码让它工作(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)