Вы можете использовать aws-sdk-mock , чтобы смоделировать DynamoDB DocumentClient с пользовательским ответом.
Чтобы смоделировать успешный ответ, вы можете сделать:
AWS.mock('DynamoDB.DocumentClient', 'query', function(params, callback) {
callback(null, {Items: [1, 2, 3]});
});
А чтобы высказать ошибку, вы можете просто сделать:
AWS.mock('DynamoDB.DocumentClient', 'query', function(params, callback) {
callback(new Error("Your error"));
});
Имейте в виду, что aws-sdk-mock автоматически выдаст ошибку, если вы укажете неверные параметры, что является изящной функцией.
Это будет работать, даже если вы вызовете .promise () при вызове SDK
В соответствии с комментарием, для насмешки над сервисом, когда он передается в функцию:
var AWS = require("aws-sdk");
var AWS_mock = require("aws-sdk-mock");
describe('App function tests', ()=>{
test('getStatusForPromiseID', ()=>{
AWS_mock.mock('DynamoDB.DocumentClient', 'query', function(params, callback) {
callback(null, {Items: [1, 2, 3]});
});
let docClient = new AWS.DynamoDB.DocumentClient();
return getStatusForPromiseID('11011', docClient)
.then(result => {
expect(result).to.equal({Items: [1, 2, 3]});
});
})
})