Last active
July 21, 2023 08:08
-
-
Save AdityaRanjanSingh/108e23e14fdf0607f1055be5a1efe49d to your computer and use it in GitHub Desktop.
Mocking aws-sdk in jest
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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