Running Mocha + Istanbul + Babel

后端 未结 3 1788
暗喜
暗喜 2020-12-07 16:54

I\'m having some issues while running istanbul with mocha and the babel compiler..

all my tests are runnning just fine, but after all the tests done it shows me this

3条回答
  •  悲哀的现实
    2020-12-07 17:04

    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.

提交回复
热议问题