Skip to content

Instantly share code, notes, and snippets.

@AdityaRanjanSingh
Last active July 21, 2023 08:08
Show Gist options
  • Save AdityaRanjanSingh/108e23e14fdf0607f1055be5a1efe49d to your computer and use it in GitHub Desktop.
Save AdityaRanjanSingh/108e23e14fdf0607f1055be5a1efe49d to your computer and use it in GitHub Desktop.
Mocking aws-sdk in jest
const AWS = require('aws-sdk');
//In the test file
const mockDynamodbGetItem = jest.fn();
const mockS3GetObject = jest.fn();
//mock aws sdk
jest.mock('aws-sdk', () => {
return {
DynamoDB: jest.fn(() => ({
GetItem: mockDynamodbGetItem
})),
S3:jest.fn(()=>({
GetObject:mockS3GetObject
}))
};
});
describe('test', () => {
beforeEach(() => {
mockDynamodbGetItem.mockReset();
mockS3GetObject.mockReset();
});
afterEach(() => {
jest.restoreAllMocks();
});
test('it return the item from dynamodb table', async done => {
mockDynamodbGetItem.mockImplementation((params,callback) => {
callback(null, { Item: { Uid: { S: 'String' }, EngagementId: { S: 'Number' } } })
};
});
let ClassToTest = new ClassToTest();
let response = await ClassToTest.functionToTest1()
expect(response.items.length).toEqual(0);
done();
});
test('it should get the data from s3', async done => {
mockS3GetObject.mockImplementation((params,callback) => {
callback(null, { Body: "test document" })
};
});
let ClassToTest = new ClassToTest();
let response = await ClassToTest.functionToTest2()
expect(response.Body).toEqual("test document");
done();
});
})
//from module to test file
class ClassToTest {
constructor() {}
functionToTest1(hashKeyValue,rangeKeyValue) {
var dynamodb = new AWS.DynamoDB({ apiVersion: '2012-08-10' });
let params = {
Key: {
HashKeyElement: {
S: hashKeyValue
},
RangeKeyElement: {
S: rangeKeyValue
}
},
TableName: 'Table Name here'
};
return new Promise((resolve,reject)=>{
dynamodb.GetItem(params,(err,data)=>{
if(err){reject(err)}
resolve(data);
})
})
return dynamodb.GetItem(params).promise();
}
functionToTest2() {
let s3 = new AWS.S3({ apiVersion: '2006-03-01' });
let params = {
Bucket: "examplebucket",
Key: "SampleFile.txt",
}
return new Promise((resolve,reject)=>{
s3.getObject(params,(err,data)=>{
if(err){reject(err)}
resolve(data)
})
})
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment