【发布时间】:2018-08-24 18:05:23
【问题描述】:
我为吐出原子化组件图标的组件编写了一个单元测试(来自从 icomoon.io 构建的自定义库)我遇到的问题是,尽管每个组件都正确呈现;呈现每个图标的组件的测试在检查时显示没有覆盖。期望的结果是,当我“npm run test:coverage”时,如果它在测试中正确呈现,它会显示每个原子化图标组件的覆盖率。
目录
* constants
--* iconConstants.js
* components
--* iconGenerator
-----* iconGenerator.js
-----* icons
--------* icon1.js
--------* icon2.js
--------* icon3.js
* __tests__
--* iconGenerator
-----*iconGenerator.test.js
这里是生成器:
import React from 'react';
import PropTypes from 'prop-types';
import cx from 'classnames';
// Constants
import { ICONS } from '../../constants/iconConstants';
const iconGenerator = (props) => {
const { type, size } = props;
const inf = ICONS[type];
return (
<span
className={ cx('ne8-icon', inf.iconCls) }
style={ { fontSize: `${size}em` } }
title={ inf.description } />
);
};
iconGenerator.defaultProps = {
size: 3,
};
iconGenerator.propTypes = {
type: PropTypes.string.isRequired,
size: PropTypes.number,
};
export default iconGenerator;
这是测试:
import React from 'react';
import ReactDOM from 'react-dom';
import iconGenerator from '../../components/iconGenerator/iconGenerator.js';
import { ICONS } from '../../constants/iconConstants';
describe('iconGenerator', () => {
const iconKeys = Object.keys(ICONS);
for (let i = 0; i < iconKeys.length; i += 1) {
it(`renders ${iconKeys[i]} symbol without crashing`, () => {
const div = document.createElement('div');
ReactDOM.render(<iconGenerator type={ iconKeys[i] } />, div);
ReactDOM.unmountComponentAtNode(div);
});
}
});
当我运行 test:coverage 时,它显示任何 icon.js 文件的覆盖率为 0,即使它们被渲染得很好,并且我获得了 icongenerator.js 文件的 100% 覆盖率。有什么想法吗?
【问题讨论】:
标签: javascript reactjs unit-testing jestjs create-react-app