标签: aws-sdk-mock

使用aws-sdk-mock对DocumentClient的promise支持进行模拟

我正在尝试使用aws-sdk-mock的promise支持编写单元测试.我正在使用DocumentClient.

我的代码看起来像这样:

const docClient = new AWS.DynamoDB.DocumentClient();

const getItemPromise = docClient.get(params).promise();
   return getItemPromise.then((data) => {
   console.log('Success');
   return data;
}).catch((err) => {
   console.log(err);
});
Run Code Online (Sandbox Code Playgroud)

我的模拟和单元测试看起来像这样:

const AWS = require('aws-sdk-mock');
AWS.Promise = Promise.Promise;

AWS.mock('DynamoDB.DocumentClient', 'get', function (params, callback)
{
   callback(null, { Item: { Key: 'test value } });
});

dynamoStore.getItems('tableName', 'idName', 'id').then((actualResponse) => {
  // assertions
  done();
});
Run Code Online (Sandbox Code Playgroud)

运行我的单元测试,不返回我的测试值,它实际上绕过我的模拟,并直接调用dynamoDb.我究竟做错了什么?我怎样才能正确设置模拟器?

node.js aws-sdk aws-sdk-mock

9
推荐指数
2
解决办法
1万
查看次数

使用 dwyl/aws-sdk-mock 模拟 AWS 不起作用

首先,我没有使用 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)
Run Code Online (Sandbox Code Playgroud)

我以前从未使用过这个模块,对 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()
}
Run Code Online (Sandbox Code Playgroud)

这是我的测试脚本:

const chai = require('chai')
const chaiAsPromised = require('chai-as-promised') …
Run Code Online (Sandbox Code Playgroud)

node.js aws-sdk aws-sdk-mock

5
推荐指数
1
解决办法
5986
查看次数

测试异步 SQS sendMessage

我有一个异步 lambda,它执行异步 SQS sendMessage 请求。SQS 队列是标准队列,不是 FIFO,只是为了澄清。

这是一个代码示例(没有不相关的逻辑部分):

exports.functionHandler = async (event, context, callback) => {
    try {
        let parsedBody = JSON.parse(event.Records[0].body);
        let modifiedBody = await doStuff(parsedBody);

        let sqsPayload = {
            MessageBody: JSON.stringify(modifiedBody),
            QueueUrl: my-queue-url
        };

        await sqs.sendMessage(sqsPayload).promise();

        callback(null, utils.respondSuccess("Done"));
    } catch (err) {
        // Handle error

        callback(null, utils.respondError(err));
    }
};

const doStuff = async payload => {
    // Do stuff 
}
Run Code Online (Sandbox Code Playgroud)

很简单。

现在的问题是:我正在尝试使用包来测试这个功能aws-sdk-mock。当 lambda 不是异步的并且 sendMessage 函数正在使用回调时,这就是我如何存根 sendMessage 函数:

it("an awesome title for my test", async () …
Run Code Online (Sandbox Code Playgroud)

javascript amazon-sqs node.js aws-lambda aws-sdk-mock

2
推荐指数
1
解决办法
1万
查看次数

aws-sdk-mock 是否支持模拟 AWS SSM(参数存储)?

我尝试使用 aws-sdk-mock 和下面的代码来模拟 AWS SSM,但不起作用。不抛出错误,从实际存储中获取值getParametersByPath调用时从实际存储中获取值。

我查看了 aws-sdk-mock 文档,但似乎没有模拟 ssm 的示例,是否支持。

AWSMock.mock('SSM', 'getParametersByPath', (params, callback) => {
  callback(null, mockResponse);
});
Run Code Online (Sandbox Code Playgroud)

jestjs ssm aws-sdk-nodejs aws-sdk-mock aws-parameter-store

2
推荐指数
1
解决办法
5708
查看次数