我正在尝试为在 docker 容器中运行的单元测试设置覆盖范围。但是,覆盖率报告无法在容器内按预期生成。但是,当命令在容器外(在 Mac OSX 和 CentOS 上)运行时,它们会成功生成。
我将我的代码库安装到图像中预先存在的路径上。
图片基于node:8.11.4
karma v3.1.4
karma 覆盖 v1.1.2
karma 覆盖 Istanbul 尔报告者 v2.0.4
karma -webpack v4.0.0-rc.5
Istanbul 尔仪器装载机 v.3.0.1 。
尝试梳理问题:
__dirname
在 karma.conf.js path.join
规范化所有路径在 karma.conf.js 和 webpack 使用的入口点中。 coverage
和 istanbul-coverage
记者。 -u $(id -u):$(id -g)
没有区别你想看什么代码?
docker run --privileged \
-u $(id -u):$(id -g) \
--mount type=bind,source=$(pwd),dst=/home/node/test/ \
-it $DOCKER_IMAGE \
/bin/bash -c "npm test"
预期的:
=============================== Coverage summary ===============================
Statements : 22.71% ( 7684/33837 )
Branches : 15.17% ( 2887/19027 )
Functions : 21.85% ( 1384/6334 )
Lines : 21.45% ( 6719/31327 )
================================================================================
实际的:
17:40:18 =============================== Coverage summary ===============================
17:40:18 Statements : Unknown% ( 0/0 )
17:40:18 Branches : Unknown% ( 0/0 )
17:40:18 Functions : Unknown% ( 0/0 )
17:40:18 Lines : Unknown% ( 0/0 )
17:40:18 ================================================================================
最佳答案
在 Angular 应用程序中对我有用的东西 - 你在 CLI ng 测试中运行 --code-coverage
它神奇地显示了覆盖范围
关于node.js - 在容器中运行挂载测试后, Istanbul 尔覆盖率未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56606623/