5

首先,我没有使用 lambda,所以我相信这个线程不是同一个问题。

我在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')
  })
})

想法?

4

2 回答 2

2

我有同样的问题。请检查 node-modules -> aws-sdk 版本。我的是 2.6.2,但它不起作用。临时修复是使用 aws-sdk 2.5.5 版本。可能很快他们就会修复所有版本,如 aws-sdk-mock 模块中所述。aws-sdk-mock 应该适用于高于 2.3.0 的所有 aws-sdk 版本。

于 2016-09-15T10:31:37.827 回答
1

我也面临同样的问题,但试图模拟 DynamoDB 而不是 S3。已经记录了相同的问题。该错误现已使用最新版本的 aws-sdk (v2.6.4) 修复。如果您将其指向最新版本 2.6.4,那就太好了。

谢谢, 扎伊德

于 2016-09-23T04:19:56.003 回答