Instrumenter for 1:1 mapping of React JSX components
npm install istanbul-react``sh`
$ npm install --save-dev istanbul-react
Use with karma-coverage
`js`
coverageReporter: {
instrumenters: { 'istanbul-react' : require('istanbul-react') }
instrumenter: {
'*/.jsx': 'istanbul-react'
},
// ...
}
You can also just use it directly
`js
var instrumenter = new require('istanbul-react').Instrumenter({});
instrumenter.instrument(content, path, function(err, instrumentedCode) {
// ...
});
`
You can use modifyCodeBeforeInstrumentation to modify code before instrumentation. It might be useful for example to get around chrome bug with 'use strict';. It takes one argument, which give you an object, with two properties code - original code, filename - name of the file. This callback must return modified code as a string. In the example below you can see how 'use strict'; is prefixed with semi-colon to work around bug (or feature?) in chrome.
`js`
coverageReporter: {
instrumenters: { 'istanbul-react' : require('istanbul-react') }
instrumenter: {
'*/.jsx': 'istanbul-react'
},
instrumenterOptions: {
'istanbul-react': {
modifyCodeBeforeInstrumentation: function fixChromeBugWithUseStrict(params) {
return params.code.replace(/(['"]use strict['"];)/g, ';$1');
}
}
},
// ...
}
`sh``
$ npm test
MIT © Podio