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

Jwq*_*wqq 4 unit-testing mocha.js node.js docker 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"]
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

可以按预期构建和工作设置.问题不是我确定如何运行单元测试命令mocha来执行测试.

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

jdn*_*dno 6

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

在您的情况下:npm start在未指定其他命令时运行.你这样做会发生docker-compose up.

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

up和中有一点点差异run,我鼓励你阅读它:我应该使用docker-compose启动还是运行?

这有助于您入门吗?