2016-09-14 61 views
2

首先,我不使用lambda,所以我认为this thread不是同一个问题。用dwyl/aws-sdk-mock模拟AWS不起作用

我得到这个错误在before钩:

TypeError: Attempted to wrap undefined property S3 as function 
     at checkWrappedMethod (node_modules/aws-sdk-mock/node_modules/sinon/lib/sinon/util/core.js:78:29) 
     at Object.wrapMethod (node_modules/aws-sdk-mock/node_modules/sinon/lib/sinon/util/core.js:121:21) 
     at Object.stub (node_modules/aws-sdk-mock/node_modules/sinon/lib/sinon/stub.js:67:26) 
     at mockService (node_modules/aws-sdk-mock/index.js:67:27) 
     at Object.AWS.mock (node_modules/aws-sdk-mock/index.js:43:5) 
     at Context.<anonymous> (myModule.spec.js:14:9) 

我从来没有使用此模块之前我也不有sinon.js很多经验。

这里是我的模块:

var AWS = require('aws-sdk') 
const https = require('https') 

module.exports = function() { 
    var s3 = new AWS.S3({ 
     httpOptions: { 
     agent: new https.Agent() 
     }, 
     signatureVersion: 'v4' 
    }) 
    return s3.getObject({Bucket: 'somebucket', Key: 'somekey'}).promise() 
} 

这里是我的测试脚本:

const chai = require('chai') 
const chaiAsPromised = require('chai-as-promised') 

const AWS = require('aws-sdk-mock') 
const myFunc = require('./myModule') 

chai.use(chaiAsPromised) 
const expect = chai.expect 
chai.should() 

describe('Get MMS API Key', function() { 

    before(function() { 
    AWS.mock('S3', 'getObject', function (params, callback) { 
     callback(null, 'dummy-data') 
    }) 
    }) 

    it('Should get dummy data', function() { 
    myFunc().should.eventually.equal('dummy-data') 
    }) 

    after(function() { 
    AWS.restore('S3', 'getObject') 
    }) 
}) 

的思考?

回答

2

我有同样的问题。请检查节点模块 - > aws-sdk版本。矿是2.6.2,它不起作用。 临时修复是使用aws-sdk 2.5.5版本。 可能很快它们将修复所有版本,正如它在aws-sdk-mock模块中所述。 aws-sdk-mock应该可以与2.3.0以上的所有aws-sdk版本一起工作。

0

我也面临同样的问题,但试图嘲笑DynamoDB而不是S3。已经记录了相同的问题。该错误现在使用最新版本的aws-sdk(v2.6.4)修复。如果你把它指向最新的2.6.4版本,那会很棒。

谢谢, Zaid