node.js - 在 docker 容器中使用 jest 运行节点测试时出错
问题描述
我正在尝试在 docker 容器中的节点应用程序上使用 jest 运行一系列单元测试。
我正在尝试使用npm test
命令运行这些测试,并且在脚本部分的package.json文件中,我具有以下配置:
"scripts": {
"test": "jest --watchAll --verbose"
},
当我在 docker 之外的本地计算机上运行此命令时,测试运行成功,但是,当我尝试在 docker 中运行相同的命令时,出现一个奇怪的错误:
TypeError: (0 , (_jestValidate || _load_jestValidate(...)).validateCLIOptions) is not a function
at buildArgv (/usr/src/app/node_modules/jest-cli/build/cli/index.js:233:66)
at Object.<anonymous> (/usr/src/app/node_modules/jest-cli/build/cli/index.js:11:20)
at Generator.next (<anonymous>)
at step (/usr/src/app/node_modules/jest-cli/build/cli/index.js:158:191)
at /usr/src/app/node_modules/jest-cli/build/cli/index.js:158:437
at new Promise (<anonymous>)
at Object.<anonymous> (/usr/src/app/node_modules/jest-cli/build/cli/index.js:158:99)
at Object.run (/usr/src/app/node_modules/jest-cli/build/cli/index.js:30:17)
at Object.<anonymous> (/usr/src/app/node_modules/jest-cli/bin/jest.js:16:27)
at Module._compile (node:internal/modules/cjs/loader:1102:14)
npm ERR! code 1
npm ERR! path /usr/src/app
npm ERR! command failed
npm ERR! command sh -c jest --watchAll --verbose
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2020-12-26T10_49_00_358Z-debug.log
我尝试在 docker -compose.yaml文件和dockerfile中使用RUN npm test
我在开发依赖项部分的package.json中配置了jest和jest-cli
"devDependencies": {
"jest": "22.4.4",
"jest-cli": "22.4.4",
"supertest": "^3.0.0"
}
我错过了什么吗?
解决方案
添加test-ci
你的package.json
,并让它在 CI 中运行:
...
scripts": {
"test": "jest --watchAll --verbose",
"test-ci": "jest --ci"
},
...
jest --watchAll
需要一些特殊的流程来为我们提供很好的测试,需要的是看文件,终端控制等等。但是,docker 图像通常没有这样的特性来减小它们的图像大小。详细一点,如果要读代码的话jest
,不过我有点累。为什么不追究?:)
推荐阅读
- c++ - 为什么我的解析字符串代码有额外的空间?
- python - 具有丹麦特色的爱普生 ESCPOS 热敏打印
- python - 在 Python3 中使用 BeautifulSoup4 刮价格 Udemy 网站
- mysql - 将 ROLLUP 转换为 CUBE
- web2py - web2py 我想要包含 m4a 文件的文件路径的字段来播放 m4a(音频)
- sql - SQL 追加缺失数据
- sql - 使用 SQL 根据特定列中相似单元格的数量对表的行重新排序
- r - 在 Rcpp 中获取随机种子
- python - 选择两个数组中的值
- sql - 显式写出列数据时,SQL Query 给出异常结果 (Snowflake)