gpt4 book ai didi

node.js - 使用 aws-sdk-mock 的 Promise 支持和 DocumentClient 进行模拟

转载 作者:行者123 更新时间:2023-12-02 06:46:22 24 4
gpt4 key购买 nike

我正在尝试使用 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);
});

我的模拟和单元测试如下所示:

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();
});

运行我的单元测试,不会返回我的测试值,它实际上绕过我的模拟,并直接调用 dynamoDb。我究竟做错了什么?如何正确设置我的模拟?

最佳答案

从您的代码中不清楚,但 aws-sdk-mock 有此注释

NB: The AWS Service needs to be initialised inside the function being tested in order for the SDK method to be mocked

因此以下内容将无法正确模拟

var AWS      = require('aws-sdk');
var sns = AWS.SNS();
var dynamoDb = AWS.DynamoDB();

exports.handler = function(event, context) {
// do something with the services e.g. sns.publish
}

但这会

var AWS = require('aws-sdk');

exports.handler = function(event, context) {
var sns = AWS.SNS();
var dynamoDb = AWS.DynamoDB();
// do something with the services e.g. sns.publish
}

在这里查看更多https://github.com/dwyl/aws-sdk-mock#how-usage

关于node.js - 使用 aws-sdk-mock 的 Promise 支持和 DocumentClient 进行模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42443655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com