我有一个基本的演示应用程序,我已经放在一起,我已经成功地编写测试并获得代码覆盖率。
除了一个小问题。
所有使用ES2015中的class关键字的代码最终会在顶部发出代码如下所示:
/*istanbul ignore next*/'use strict';Object.defineProperty(exports, "__esModule", { value: true });var _createClass = function () {function defineProperties(target, props) {for (var i = 0; i < props.length; i++) {var descriptor = props[i];descriptor.enumerable = descriptor.enumerable || false;descriptor.configurable = true;if ("value" in descriptor) descriptor.writable = true;Object.defineProperty(target, descriptor.key, descriptor);}}return function (Constructor, protoProps, staticProps) {if (protoProps) defineProperties(Constructor.prototype, protoProps);if (staticProps) defineProperties(Constructor, staticProps);return Constructor;};}();var /*istanbul ignore next*/_react = require('react'); /*istanbul ignore next*/var React = _interopRequireWildcard(_react);
这是一个非常长的路线,我将为您省去阅读它的麻烦。
有几个问题。
首先,/ * istanbul忽略next * /应该是/ * istanbul忽略next * /在注释前后有空格,否则istanbul基本上忽略它。
其次,即使你修复了我尝试过的事情,但是该字符串中的函数根本没有使用ignore注释进行评论。我假设因为一组函数都被一次性添加,所以在开始时只应用了一个注释。
我在package.json和.babelrc中的babel配置如下所示:
"presets": ["react","es2015"],
"comments": true,
"compact": false
我也尝试将babel-plugin-transform-runtime添加为
"plugins": ["transform-runtime"]
在“预设”行之前和之后,但是当我这样做时,我收到的错误表明自动模拟无法读取元数据。
所以,我猜问题是。使用class关键字的代码覆盖是否适用于Jest?如果是这样,我错过了什么?有没有办法让转换运行时工作?
答案 0 :(得分:0)
对于将来来到这里的任何人,我都是通过以下方式解决这个问题:
描述具体细节需要1000个字,你可以在这里查看:
http://blog.dmbcllc.com/es2015-code-coverage-and-jest-react-js-unit-testing/