Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无法使用Sinon存根AWS KMS_Node.js_Amazon Web Services_Unit Testing_Sinon_Aws Kms - Fatal编程技术网

Node.js 无法使用Sinon存根AWS KMS

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

编写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/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)
                                                                    }
                                                                })

    })

})