babel-plugin-rewire-ignore-coverage
This plugin disables rewire injected methods from istanbul coverage counts.
We get ES6/7 syntax and JSX transpiling out of the box with babel-loader (webpack module). The rewire plugin to babel is used to mock out other components when unit testing a component. The rewiring injects some code (setters/getters/resetters) when the system under test accesses the other dependent mocked components. The coverage sweep reported those injected methods as not covered by tests. This new babel-plugin-rewire-ignore-coverage plugin marks those injected code functions to be ignored by istanbul, after the rewiring
Works with Babel 6.x
Example
In
{ if _RewiredData__ === undefined || _RewiredData__variableName === undefined return ; else var value = _RewiredData__variableName; if value === INTENTIONAL_UNDEFINED return undefined; else return value; } { return undefined;} { if _RewiredData__ === undefined || _RewiredData__variableName === undefined return ; else return _RewiredData__variableName = value; } { return undefined;} { var oldValue = ; var newValue = operation === '++' ? oldValue + 1 : oldValue - 1; ; return prefix ? newValue : oldValue;} { if typeof variableName === 'undefined' ? 'undefined' : === 'object' Object; else if value === undefined _RewiredData__variableName = INTENTIONAL_UNDEFINED; else _RewiredData__variableName = value; return { ; }; } { delete _RewiredData__variableName;} { var rewiredVariableNames = Object; var previousValues = {}; { rewiredVariableNames; } return { rewiredVariableNames; var result = ; if !!result && typeof resultthen === 'function' result; else ; return result; };}
Out
// istanbul ignore next { if _RewiredData__ === undefined || _RewiredData__variableName === undefined return ; else var value = _RewiredData__variableName; if value === INTENTIONAL_UNDEFINED return undefined; else return value; } // istanbul ignore next { return undefined;} // istanbul ignore next { if _RewiredData__ === undefined || _RewiredData__variableName === undefined return ; else return _RewiredData__variableName = value; } // istanbul ignore next { return undefined;} // istanbul ignore next { var oldValue = ; var newValue = operation === '++' ? oldValue + 1 : oldValue - 1; ; return prefix ? newValue : oldValue;} // istanbul ignore next { if typeof variableName === 'undefined' ? 'undefined' : === 'object' Object; else if value === undefined _RewiredData__variableName = INTENTIONAL_UNDEFINED; else _RewiredData__variableName = value; return { ; }; } // istanbul ignore next { delete _RewiredData__variableName;} // istanbul ignore next { var rewiredVariableNames = Object; var previousValues = {}; { rewiredVariableNames; } return { rewiredVariableNames; var result = ; if !!result && typeof resultthen === 'function' result; else ; return result; };}
Installation
$ npm install babel-plugin-rewire-ignore-coverage
Usage
.babelrc
(Recommended)
Via .babelrc
Via CLI
$ babel --plugins rewire-ignore-coverage script.js
Via Node API
;
Via Karma config
webpack: {
devtool: "source-map",
module: {
loaders: [
{
// all js src and test files get treated by babel
test: /\.js?$/,
include: [
path.resolve(__dirname, "client/src"),
path.resolve(__dirname, "client/test")
],
exclude: [nodeModulesPath],
loader: "babel-loader",
query: {
plugins: ['babel-plugin-rewire',
'babel-plugin-rewire-ignore-coverage']
}
},