DEV Community

Ivan V.
Ivan V.

Posted on

3 1

MongoDB and PostgreSQL database testing with Jest and Docker containers

I've made an example repository that demonstrates how to test MongoDB and PostgreSQL databases with Docker containers
and Jest.

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.

How it works

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.

Test execution

  • 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.

Running on Github Actions

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.

https://github.com/ivandotv/jest-database-containers

Top comments (0)

Eliminate Context Switching and Maximize Productivity

Pieces.app

Pieces Copilot is your personalized workflow assistant, working alongside your favorite apps. Ask questions about entire repositories, generate contextualized code, save and reuse useful snippets, and streamline your development process.

Learn more

👋 Kindness is contagious

Discover a treasure trove of wisdom within this insightful piece, highly respected in the nurturing DEV Community enviroment. Developers, whether novice or expert, are encouraged to participate and add to our shared knowledge basin.

A simple "thank you" can illuminate someone's day. Express your appreciation in the comments section!

On DEV, sharing ideas smoothens our journey and strengthens our community ties. Learn something useful? Offering a quick thanks to the author is deeply appreciated.

Okay