如何在Docker中为nodejs应用程序设置单元测试?

时间:2017-03-26 23:52:15

标签: node.js unit-testing docker mocha docker-compose

我正在尝试为我的节点应用程序运行mocha单元测试。该应用程序由docker镜像构建。

Docker镜头:

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撰写:

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

可以按预期构建和运行设置。问题不在于我确定如何运行像mocha这样的单元测试命令来执行测试。

我看到一个名为dockunit的模块,但我不确定这是否是现在唯一的方法。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:6)

使用docker(和docker-compose),您可以在容器中运行任意命令。 Dockerfile定义了在未指定其他命令时运行的默认命令,但这并不意味着它是唯一可以运行的命令。

在您的情况下:当没有指定其他命令时运行npm start。当你执行docker-compose up时会发生这种情况。

但是,您可以使用docker rundocker-compose run运行任何命令。对于您的测试,可能如下所示:docker-compose run web mocha

uprun略有不同,我建议您仔细阅读:Should I use docker-compose start up or run?

这有助于您入门吗?