Integration tests with MySQL
Launching a MySQL service container
In this example, we will see a NodeJS project that is using MySQL for data storage. For the integration test phase we will launch an instance of MySQL in order to run a simple integration test.
The integration tests look for a MySQL connection at test_mysql_db:3306
.
Example NodeJS project
You can see the example project at https://github.com/codefreshdemo/cf-example-unit-tests-with-composition. The repository contains the NodeJS source code and the simple integration test.
You can play with it locally by using Docker compose to launch both the application and the MySQL Database.
Create a pipeline with MySQL integration tests
Here is the whole pipeline:
codefresh.yml
This pipeline does the following:
- Clones the source code through a Git clone step.
- Builds a Docker image with the integration test through a build step.
- Runs the tests while launching a service container for an active MySQL instance passing the required environment variables (that match what the test is expecting).
Notice that both the DB as well as the tests share a set of variables (MYSQL_PASSWORD
, MYSQL_USER
etc.) and thus we use YAML anchors to avoid duplication.
Notice that we also use the readiness
property in the testing phase so that we can verify MySQL is ready and listening, before running the tests.
Related articles
CI pipeline examples
Integration test example
Integration tests with Postgres
Integration tests with Redis
Integration tests with Mongo