2016-09-14 85 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