Using Babel 6.x, let's say we have file 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');
});
});
Install a bunch of crap:
$ npm install babel-istanbul babel-cli babel-preset-es2015 mocha
Create a .babelrc
:
{
"presets": ["es2015"]
}
Run the tests:
$ 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 )
================================================================================
UPDATE: I've had success using nyc
(which consumes istanbul
) instead of istanbul
/babel-istanbul
. This is somewhat less complicated. To try it:
Install stuff (you can remove babel-istanbul
and babel-cli
):
$ npm install babel-core babel-preset-es2015 mocha nyc
Create .babelrc
as above.
Execute this:
$ node_modules/.bin/nyc --require babel-core/register node_modules/.bin/mocha
test/pad.spec.js
...which should give you similar results. By default, it puts coverage info into .nyc-output/
, and prints a nice text summary in the console.
Note: You can remove node_modules/.bin/
from any of these commands when placing the command in package.json
's scripts
field.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…