Docker中的节点:npm测试并退出

时间:2019-04-30 18:38:25

标签: node.js docker testing npm

我想在运行容器时使用“ npm run test”作为覆盖的命令来测试节点docker映像。

我的Dockerfile是:

FROM node:alpine
WORKDIR /app
COPY ./package.json ./
RUN npm install
COPY ./ ./
CMD ["npm", "run", "start"]

“ npm run test”命令应该在我的容器中运行,并退出到终端(本地和Travis CI),但是测试运行停留在“运行所有测试套件”上。等待输入。

我的docker run命令是:

docker run myimage npm run test -- --coverage

我也尝试过:

docker run myimage npm run test -- --forceExit

但是运行测试时(在本地或在Travis CI中)没有一个退出。

我的App.test.js文件是标准测试:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

it('renders without crashing', () => {
  const div = document.createElement('div');
  ReactDOM.render(<App />, div);
  ReactDOM.unmountComponentAtNode(div);
});

我应该怎么做才能在测试完成后自动退出测试?

2 个答案:

答案 0 :(得分:0)

发现docker run命令应包含- e CI = true 才能立即退出:

docker run -e CI=true myimage npm run test

从React文档中有关“ CI = true”的信息:

  

test命令将强制Jest在CI模式下运行,并且测试将   只能运行一次,而不启动监视程序。

答案 1 :(得分:0)

我需要将 ENV CI=true 添加到我的 Dockerfile:

ENV CI=true
RUN npm run test
RUN npm run build