Wes*_*ujo 48 mocha.js node.js istanbul babeljs
我在使用mocha和babel编译器运行istanbul时遇到了一些问题.
我的所有测试都运行得很好,但在完成所有测试后,它会向我显示以下消息:
No coverage information was collected, exit without writing coverage information
而且它没有制作任何报道报道..
我正在运行的命令是:
NODE_ENV=test istanbul cover _mocha -- --require babel-core/register --recursive
该项目托管在github:https: //github.com/weslleyaraujo/react-flux-puzzle/tree/feat/unit-tests-24
任何想法可能是什么?
bon*_*ull 63
使用Babel 6.x,假设我们有文件test/pad.spec.js:
import pad from '../src/assets/js/helpers/pad';
import assert from 'assert';
describe('pad', () => {
it('should pad a string', () => {
assert.equal(pad('foo', 4), '0foo');
});
});
Run Code Online (Sandbox Code Playgroud)
安装一堆垃圾:
$ npm install babel-istanbul babel-cli babel-preset-es2015 mocha
Run Code Online (Sandbox Code Playgroud)
创建一个.babelrc:
{
"presets": ["es2015"]
}
Run Code Online (Sandbox Code Playgroud)
运行测试:
$ node_modules/.bin/babel-node node_modules/.bin/babel-istanbul cover \
node_modules/.bin/_mocha -- test/pad.spec.js
pad
? should pad a string
1 passing (8ms)
=============================================================================
Writing coverage object [/Volumes/alien/projects/forked/react-flux-puzzle/coverage/coverage.json]
Writing coverage reports at [/Volumes/alien/projects/forked/react-flux-puzzle/coverage]
=============================================================================
=============================== Coverage summary ===============================
Statements : 100% ( 4/4 )
Branches : 66.67% ( 4/6 ), 1 ignored
Functions : 100% ( 1/1 )
Lines : 100% ( 3/3 )
================================================================================
Run Code Online (Sandbox Code Playgroud)
更新:我成功使用nyc(消耗istanbul)而不是istanbul/ babel-istanbul.这有点不太复杂.尝试一下:
安装东西(你可以删除babel-istanbul和babel-cli):
$ npm install babel-core babel-preset-es2015 mocha nyc
Run Code Online (Sandbox Code Playgroud)
.babelrc按上述方式创建.
执行:
$ node_modules/.bin/nyc --require babel-core/register node_modules/.bin/mocha \
test/pad.spec.js
Run Code Online (Sandbox Code Playgroud)
......应该给你类似的结果.默认情况下,它将覆盖信息放入.nyc-output/,并在控制台中打印一个漂亮的文本摘要.
注意:node_modules/.bin/将命令放在package.json"s" scripts字段中时,可以从任何这些命令中删除.
Yve*_* M. 25
PS:我现在建议使用单一的jest而不是mocha/instanbul/nyc/chai/etc.
安装程序(不要忘:@next了nyc)
npm install --save-dev nyc babel-plugin-istanbul babel-register
Run Code Online (Sandbox Code Playgroud)
添加env babel配置:
{
"env": {
"nyc": { "plugins": ["istanbul"] }
}
}
Run Code Online (Sandbox Code Playgroud)
nyc 配置:
{
"reporter" : ["text", "text-summary", "lcov", "html"],
"include" : ["src/**/*.js"],
"require" : ["babel-register"],
"sourceMap" : false,
"instrument" : false,
"all" : true
}
Run Code Online (Sandbox Code Playgroud)
PS:include字段需要在in .nycrc中指定package.json,如果在命令行中指定,则覆盖不起作用
运行测试:
# 1. Build
NODE_ENV=nyc babel src --out-dir lib
# 2. Coverage
nyc mocha
Run Code Online (Sandbox Code Playgroud)
最近在istanbul(1.0.0-alpha.2)上完成了工作,以支持Babel生成的源代码代码(参见#212和此示例).
有两种方式:
这是通过两个步骤完成的:首先,使用babel构建源代码(例如从./src到./out)并针对已编译的源(export foo from "./out/foo";)编写测试.
然后,您将能够使用istanbul 1.0.0-alpha.2运行测试:
istanbul cover _mocha -- ./test --compilers js:babel-register
Run Code Online (Sandbox Code Playgroud)
现在,如果您希望代码覆盖率遵循您编写的原始代码(而不是已编译的代码),请确保使用设置为以下两者的babel source-maps选项进行构建:
babel ./src --out-dir ./out --source-maps both
Run Code Online (Sandbox Code Playgroud)
PS:如果需要你也可以这样做:
istanbul cover _mocha -- ./test --compilers js:babel-register \
--require babel-polyfill \
--require should \
--require sinon
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你用原始source(export foo from "./src/foo";)编写测试,没有进一步的步骤,你直接使用babel-node对cli.js 运行istanbul 1.0.0- alpha.2:
babel-node ./node_modules/istanbul/lib/cli.js cover _mocha -- ./test
Run Code Online (Sandbox Code Playgroud)
PS:如果需要你也可以这样做:
babel-node ./node_modules/istanbul/lib/cli.js cover _mocha -- ./test
--require babel-polyfill \
--require should \
--require sinon
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17605 次 |
| 最近记录: |