Node.js 无法使用Sinon存根AWS KMS
编写nodejs AWS lambda,其中一个步骤是使用AWS KMS CMK加密数据密钥 尝试为我遇到的步骤创建单元测试。我无法使用Sinon存根AWS KMS类。我认为问题在于Sinon无法确定对象的正确类型。我能做些什么来解决这个问题。谢谢 运行测试时,我得到类型错误:Node.js 无法使用Sinon存根AWS KMS,node.js,amazon-web-services,unit-testing,sinon,aws-kms,Node.js,Amazon Web Services,Unit Testing,Sinon,Aws Kms,编写nodejs AWS lambda,其中一个步骤是使用AWS KMS CMK加密数据密钥 尝试为我遇到的步骤创建单元测试。我无法使用Sinon存根AWS KMS类。我认为问题在于Sinon无法确定对象的正确类型。我能做些什么来解决这个问题。谢谢 运行测试时,我得到类型错误: TypeError: Cannot stub non-existent own property encrypt at Sandbox.stub (node_modules/sinon/lib/sinon/san
TypeError: Cannot stub non-existent own property encrypt
at Sandbox.stub (node_modules/sinon/lib/sinon/sandbox.js:288:19)
at Context.<anonymous> (test/cryptoKmsCmkTest.js:20:22)
at Context.done (test/cryptoKmsCmkTest.js:10:9)
at process.topLevelDomainCallback (domain.js:126:23)
我建议用AWSSDKmock()试试这个方法,编辑您的帖子并在下面提供代码test@MukeshRawat尝试了aws sdk模拟,它成功了。Thanks@slideshowp2测试是目前所有的代码。只是为了说明Sinon在AWS sdk中找不到AWS.KMS.encrypt。
'use strict'
const AWS = require('aws-sdk') // AWS SDK
const sinon = require('sinon')
describe('test KMS mock', function () {
let sinonSandbox
let result
beforeEach(done => {
sinonSandbox = sinon.createSandbox()
done()
})
afterEach(done => {
sinonSandbox.restore()
done()
})
it('Config Create', async function () {
process.env.AWS_CMK_ALIAS = 'cmk-key'
sinonSandbox.stub(AWS.KMS.prototype, 'encrypt').returns({
promise: function () {
return Promise.resolve(result)
}
})
})
})