我在设置环境以运行 nyc 覆盖时遇到了一些麻烦。这是一个带有 mocha 的反应应用程序,用于单元测试。这个本来是别人在mac上开发的,所以package.json命令都是面向mac的。
首先,我的 package.json 脚本中有:
"test": "NODE_ENV=test nyc mocha --recursive --compilers js:babel-register --require babel-polyfill",
"check-coverage": "nyc check-coverage --lines 100 --functions 100 --branches 95"
NODE_ENV 报错,'NODE_ENV' is not recognized as an internal or external command,
operable program or batch file.
我发现是因为 NODE_ENV 不是windows语法,于是我试了一下:
"test": "set NODE_ENV=test&& nyc mocha --recursive --compilers js:babel-register --require babel-polyfill",
"check-coverage": "nyc check-coverage --lines 100 --functions 100 --branches 95"
随着 nyc 运行,但被列为 Unknown% (0/0) 并且节点给出以下错误:
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module 'C:\path-to-folder\Desktop\github-apps\diabetesdashboard\node'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Function.Module.runMain (internal/modules/cjs/loader.js:831:12)
at startup (internal/bootstrap/node.js:283:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
然后我尝试了:
"test": "set NODE_ENV=test&& nyc&& mocha&& --recursive&& --compilers&& js:babel-register&& --require babel-polyfill",
"check-coverage": "nyc check-coverage --lines 100 --functions 100 --branches 95"
并且 nyc 仍然运行,但是说No test files found
npm 失败:
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! diabeties-server@0.0.0 test: `set NODE_ENV=test&& nyc&& mocha&& --recursive&& --compilers&& js:babel-register&& --require babel-polyfill`
npm ERR! Exit status 1
然后我尝试了所有可能的命令和 && 组合,但没有成功。我不确定还能尝试什么。文件夹结构为 root/test 和 root/src。我有一个也使用 Windows 的同事,他能够让单元测试工作而无需更改 package.json ......而且他不知道他做了什么让它工作。
我还应该提到,我不认为这是我的测试本身的问题。该应用程序通过 docker 运行,我可以通过 docker 运行我的单元测试和代码覆盖率。但是,通过 docker 运行不会生成 /coverage 文件夹供我查看覆盖率报告。
另请注意:package.json 中的启动脚本确实有一个“节点”选项。
"start": "node ./bin/www",
Windows 10 节点版本:v10.17.0 摩卡:^5.2.0 纽约:^13.1.0