使用sinon在新建对象中的存根嵌套方法

时间:2019-02-20 04:27:33

标签: node.js unit-testing sinon stub

我正在使用npm模块“ azure-arm-cognitiveservices”来获取Azure认知服务帐户密钥。

let client = new cognitiveServicesManagement(credentials, subscriptionId)

client.accounts.listKeys(resource_group, location).then(result=>{
      resolve(result.key1||result.key2)
}).catch(err=>{
      reject(err)
})

我尝试像这样对listKeys方法进行存根:

    sinon.stub(cognitiveServicesManagementModule.prototype.accounts, 'listKeys).resolves('key')

但这会引发“尝试对未定义的属性'listKeys'进行存根”错误。

如何处理此嵌套方法?

1 个答案:

答案 0 :(得分:0)

尝试此操作,在像您一样使用名称客户端创建对象ognitiveServicesManagementModule之后,然后

let stub1 = sinon.stub(client.accounts, 'listKeys')

并像这样更改函数的返回结果

stub1.returns(key)

如果您想返回承诺

stub1.returns(Promise.resolve( key ));