我正在直接使用
mocha 和
isparta,并配合
Babel 6 使用,如下所示:
npm test
命令
BABEL_ENV=test babel-node node_modules/isparta/bin/isparta cover _mocha
.babelrc
{
"plugins": [
"add-module-exports",
"transform-decorators-legacy",
"transform-runtime"
],
"presets": [
"es2015",
"react",
"stage-0"
],
"env": {
"test": {
"plugins": [
"rewire"
]
}
}
}
test/mocha.opts
--compilers js:babel-core/register
--require test/init.js
src/**/*_test.js*
test.init.js
'use strict';
require('mock-require')('clappr');
require('testdom')('<html><body></body></html>', {
React: 'react',
localStorage: 'localStorage'
});
.istanbul.yml
instrumentation:
root: src
excludes: ['*_test.js']
从 package.json
中选择依赖项
"babel-cli": "^6.7.5",
"babel-core": "^6.7.2",
"babel-eslint": "^5.0.0",
"babel-loader": "^6.2.4",
"babel-plugin-add-module-exports": "^0.1.2",
"babel-plugin-rewire": "^1.0.0-rc-2",
"babel-plugin-runtime": "^1.0.7",
"babel-plugin-syntax-jsx": "^6.5.0",
"babel-plugin-transform-decorators-legacy": "^1.3.4",
"babel-plugin-transform-runtime": "^6.6.0",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0",
"babel-preset-stage-0": "^6.5.0",
"babel-register": "^6.7.2",
"babel-runtime": "^5.8.34",
"babel-template": "^6.7.0",
"babel-types": "^6.7.2",
"isparta": "^4.0.0",
"mocha": "^2.4.5",
.JSX 文件说明
我把所有的 .JSX 文件重命名为 .JS,原因如下:
- 我使用 codecov 进行托管覆盖率报告。这揭示了一个事实,即尽管
coverage/lcov-report/index.html
显示了正确的覆盖率,但是 JSON 覆盖文件中的 .JSX 文件缺少一些内容。我从未能够弄清楚这是什么原因。据我所知,这是 isparta 或 istanbul 中的一个 bug。我还尝试过 istanbul@1.0.0-alpha.2
,发现它也有同样的问题。
- React 曾经建议将文件命名为 .JSX,以便于转换工具和编辑器使用。但是现在不再建议这样做了。据我所知,这已经不再重要了。
自从改用 .JS 之后,我没有遇到任何工具问题,包括 Atom 和 IntelliJ。
如果您不想重命名文件,可以在我的上述示例中添加以下内容:
在脚本中,在
isparta cover
后面添加
--include \"src/**/*_test.jsx\"
。
在
.istanbul.yml
中添加:
extensions:
- .js
- .jsx