Jest preset for easily running tests using DynamoDB local
npm install jest-dynamodb-local-dockerJest preset and helper functions for easily running tests using DynamoDB local
See the tests in this repo for example usage.
``js
const {
getDynamodbClient,
getDynamodbDocumentClient,
createTable,
deleteTable,
} = require('jest-dynamodb-local-docker');
describe('test', () => {
beforeAll(async () => {
await createTable(/ table properties /);
});
afterAll(async () => {
await deleteTable(/ { tableName: 'table name' } /);
});
it('should work', async () => {
const ddb = getDynamodbDocumentClient(); // or use the standard DynamoDB Client with getDynamodbClient()
await ddb.put(/ put request /);
await expect(
ddb.get(/ get request /)
).toStrictEqual(/ the item we just wrote /);
});
});
`
Add the jest-dynamodb-local-docker preset to your Jest config. For example:
`json`
// in your package.json
{
"jest": {
"preset": "jest-dynamodb-local-docker"
}
}
- global.createTable - Creates a DynamoDB table
- global.deleteTable - Deletes a DynamoDB table
- global.getDynamodbClient and global.getDynamodbDocumentClient - Get a standard DynamoDB Client or DynamoDB DocumentClient configured to use DynamoDB local
You may need to use the --runInBand configuration flag when running your Jest tests. Otherwise, you can have multiple test workers trying to create/delete the same tables concurrently, which will probably lead to unexpected results.
Alternatively, if you ensure that each test uses a unique table, you should be able to run without --runInBand.
We use debug for debugging logs. To turn on the debugging logs, run your tests like:
`sh``
DEBUG="jest-dynamodb-local-docker" jest --runInBand