在docker-compose映像上运行Mocha单元测试

时间:2019-04-11 14:33:44

标签: node.js docker docker-compose mocha

我在nodeJs中有一个api,它在微服务下运行。 到目前为止,一切正常,我接下来要做的就是能够在这些图像上运行单元测试(mocha)。

docker-compose.yml:

version: '3'

services:   db:
    image: mongo
    ports:
      - 27017:27017

  db-seeds:
    build: ./services/mongo-seeds
    links:
      - db

  gateway:
    build: ./services/gateway
    ports:
      - 4000:4000
    depends_on:
      - A
      - B
      - C

  A:
    build: ./services/A
    ports:
      - 4003:4000
    depends_on:
      - db

  B:
    build: ./services/B
    ports:
      - 4001:4000
    depends_on:
      - db

  C:
    build: ./services/C
    ports:
      - 4002:4000
    depends_on:
      - db

一个DockerFile:

FROM node:latest
COPY . /src
WORKDIR /src
RUN yarn
EXPOSE 4000
CMD yarn start

到目前为止,我所做的是制作另一个docker-compose文件,该文件将运行其他docker文件(DockerFile.test):

FROM node:latest
COPY . /src
WORKDIR /src
RUN yarn
EXPOSE 4000
CMD yarn test

也尝试过:

FROM node:latest
COPY . /src
WORKDIR /src
RUN yarn
EXPOSE 4000
CMD yarn start
RUN sleep 240
CMD yarn test

它们都失败,这时在我的网关和服务器启动之前就启动了纱线测试。我想要做的是启动服务器,然后在映像中运行我的单元测试,但是我是Docker的新手,并且缺乏如何实现它的知识。

纱线测试:

  

“ test”:“ NODE_ENV = test ./node_modules/.bin/mocha”

1 个答案:

答案 0 :(得分:0)

您必须与docker-compose文件在同一主机上运行mocha。这也可以是docker映像(如果需要,可以以docker-compose开头;)

在运行纱线测试之前,必须与服务一起运行docker-compose。

  • 使用docker和docker-compose和node(针对您的情况)创建/使用Dockerfile
  • 在上面复制您的来源(docker-compose.yml和其他相关来源)
  • 运行docker-compose up -d
  • 对其进行纱线测试

诸如CloudFoundry或OpenStack之类的工具可能会完成此工作。 如果您使用CloudFoundry,我可以为您提供详细信息。

要连接多个命令,请使用unix-cli语法:

RUN  docker-compose up -d && \
     service1 && \
     yarn test