我在设置环境以运行NYC覆盖时遇到了一些麻烦。这是一个带有mocha的react应用,用于单元测试。它最初是由其他人在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中的启动脚本中确实有一个“ node”选项。
"start": "node ./bin/www",
Windows 10 节点版本:v10.17.0 摩卡咖啡:^ 5.2.0 纽约:^ 13.1.0