在并行运行时获取 mocha 上的原始 process.argv 值

Posted

技术标签:

【中文标题】在并行运行时获取 mocha 上的原始 process.argv 值【英文标题】:Getting original process.argv value on mocha on parallel run 【发布时间】:2021-09-07 11:53:21 【问题描述】:

我刚刚升级到 mocha 8 并启用了测试文件的并行运行。它会生成多个浏览器窗口,因此它可以正常工作,但现在 process.argv 的值已更改。

如何获取传递给命令的原始参数?

这是我的.mocharc.json 文件:


 "timeout": 90000,
 "extension": ["ts"],
 "parallel": true,
 "jobs": 4,
 "require": [
   "./tests/config/init.ts",
 ],
 "spec": ["./tests/specs/*.ts"]

最初,在不使用parallel模式运行时,process.argv的值为

['/usr/local/Cellar/node/16.0.0_1/bin/node',
 '/Users/current/proj/node_modules/mocha/bin/mocha',
 '-r',
 '/Users/current/proj/node_modules/ts-mocha/src/index.js',
 './tests/tsconfig.json',
 '--config=./tests/.mocharc.json',
 '--headless',
];

并行运行时显示为:

['/usr/local/Cellar/node/16.0.0_1/bin/node',
 '/Users/current/proj/node_modules/mocha/lib/nodejs/worker.js',
];

这是有道理的,因为现在该进程是一个工人,但我需要检索 process.argv 的原始值。

【问题讨论】:

【参考方案1】:

最后,我在GitHub项目中询问得到的解决方案是将process.argv附加到process.env,默认情况下应该传递给工作进程。 这可以在 Mocha 的配置文件.mocharc.js 中完成。 基本上,将您想要的标志设置到环境变量中,然后从那里提取它。

【讨论】:

以上是关于在并行运行时获取 mocha 上的原始 process.argv 值的主要内容,如果未能解决你的问题,请参考以下文章

您如何安装和运行 Mocha,Node.js 测试模块?安装后获取“mocha:找不到命令”

使用Vue组件的mocha进行单元测试时基类中的方法不存在

尽管使用 done,Mocha 在 Before 钩子中调用异步承诺链超时

使用 mocha 时 getaddrinfo 无法解析主机文件中的地址

运行 mocha 测试时 Babel 意外令牌导入

错误:在运行排毒测试时找不到模块“mocha/lib/cli/run-option-metadata”