Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to setup unit test in Docker for nodejs application?

I am trying to run mocha unit test for my node application. The application is built by a docker image.

Docker image:

FROM node:6.10.0-alpine

RUN mkdir -p /app
WORKDIR /app

COPY package.json /app
RUN npm install

COPY . /app

EXPOSE 3000
CMD ["npm", "start"]

Docker compose:

version: "3"
services:
  web: #### nodejs image
    build: .
    volumes:
      - ./app/         
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    build:  ##### postgres db image
      context: .
      dockerfile: dbDockerfile
    ports:
      - 5432:5432

The setup can be built and worked as expected. The problem is not I am sure how to run unit test commands like mocha to perform the test.

I see a module called dockunit but I am not sure if that's the only way for now. Can anyone help me out about this?

like image 686
Jwqq Avatar asked Mar 26 '17 23:03

Jwqq


People also ask

How do I run a test in a Docker container?

Running tests against a browser in a Docker container through an Open Agent that is running in another Docker container. The browser and the Open Agent communicate with each other through a Docker network. The test executor is running on your local Windows machine. Running tests entirely from Docker containers.

Can Docker be used for testing?

Docker Hub can automatically test changes to your source code repositories using containers. You can enable Autotest on any Docker Hub repository to run tests on each pull request to the source code repository to create a continuous integration testing service.


1 Answers

With docker (and docker-compose), you can run arbitrary commands in a container. The Dockerfile defines the default command that is run when no other command is specified, but that doesn't mean it's the only one you can run.

In your case: npm start is run when no other command is specified. That happens when you do docker-compose up.

But, you can run any command using docker run or docker-compose run. For your tests, that might look like this: docker-compose run web mocha.

There is a slight difference in up and run, and I encourage you to read up on it: Should I use docker-compose start up or run?

Does this help you get started?

like image 58
jdno Avatar answered Oct 04 '22 20:10

jdno