I've made an example repository that demonstrates how to test MongoDB and PostgreSQL databases with Docker containers
Currently, I have no time to write the full article but it is on my to-do list. In the meantime, you can check out the repository that has a readme file where everything is explained.
When Jest is started, and before the tests are executed, we create two docker database containers (MongoDB and PostgreSQL) each test file (Jest Worker) gets a new database inside the container.
If the detected OS is Linux, we use the
tmpfs file system inside the containers which increases the speed of execution since in that case all database data is held in memory.
- Before each test, the database is seeded.
- After each test, the database is cleared.
- When all tests in the file are done, the database is discarded.
- When Jest is done running all the tests, database containers are stopped and removed.
Jest watch mode is supported, in that case, everything works that same, but database containers will not be stopped and removed until you exit watch mode.
Github actions file is included. Default Ubuntu Github Actions image comes with Docker preinstalled so no issues are running the tests in a continuous integration environment.
I use this setup in my projects, so this repository will be kept up to date.