我正在使用aws-sdk-mock
. 似乎我传递的任何查询参数都将始终匹配。例如查看实现:
const AWS = require("aws-sdk");
...
const dynamoDB = new AWS.DynamoDB.DocumentClient();
await dynamoDB
.query({
TableName: dynamoDBTableName,
IndexName: gsiIndexName,
KeyConditionExpression: "active = :active and reference_id = :ref_id",
ExpressionAttributeValues: {
":ref_id": referenceID,
":active": 1,
},
})
.promise()
.then((returnData) => (data = returnData))
.catch(console.error);
我的测试文件像这样模拟这个调用:
const dynamoDBQueryParams = {
TableName: "TABLE_NAME",
IndexName: "INDEX_NAME",
KeyConditionExpression: "active = :active and reference_id = :ref_id",
ExpressionAttributeValues: {
":ref_id": event.pathParameters.referenceDataID,
":active": 1,
},
}
AWS.mock('DynamoDB.DocumentClient', 'query', function(dynamoDBQueryParams, callback) {
callback(null, dynamoDBExpectedReturnValues);
});
无论运行测试时的dynamoDBTableName
andgsiIndexName
是什么,它总是会返回dynamoDBExpectedReturnValues
. 当然,如果这些参数不修补模拟响应,则不应返回,但确实如此。如何确保匹配逻辑正确?还是我错误地实现了模拟?
非常感谢您提前。