1

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

无论运行测试时的dynamoDBTableNameandgsiIndexName是什么,它总是会返回dynamoDBExpectedReturnValues. 当然,如果这些参数不修补模拟响应,则不应返回,但确实如此。如何确保匹配逻辑正确?还是我错误地实现了模拟?

非常感谢您提前。

4

0 回答 0