在快照测试React组件期间没有定义`PropTypes

时间:2018-01-19 16:41:36

标签: reactjs unit-testing snapshot react-proptypes

摘要:我收到ReferenceError: PropTypes is not defined错误,导致测试套件在使用此命令对我的react组件运行快照测试时出现故障:jest Idea-test.js -c jest-config.json

我检查了什么:

  • 我检查了eslint是否有不同的版本(我没有,3.x.x
  • 从组件中注释prop类型验证可以消除错误并且测试通过。
  • importrequire()测试文件中的PropType无效。

组件:

import React from 'react';
import { Module, ModuleHeader, ModuleBody } from 'carbon-components-react';
import PropTypes from 'prop-types';

const Ideas = props =>
  (
    <Module className="ideas">
      <ModuleHeader className="header">
        {`${props.Title}`}
      </ModuleHeader>
      <ModuleBody className="body">
        {`${props.Body}`}
        <a href={props.Link}>
          {`${props.LinkText}`}
        </a>
      </ModuleBody>
    </Module>
  );

Ideas.propTypes = {
  Title: PropTypes.string.isRequired,
  Body: PropTypes.string.isRequired,
  Link: PropTypes.string.isRequired,
  LinkText: PropTypes.string.isRequired,
};

export default Ideas;

快照测试文件:

import 'raf/polyfill';
import React from 'react';
import Ideas from '../../Ideas';
const renderer = require('react-test-renderer');

it('renders correctly', () => {
    const tree = renderer
      .create(<Ideas
        Title='Title'
        Body='Share your ideas'
        Link='https://shareyouridea.already'
        LinkText='Need ideas now.'
        />
      )
      .toJSON();
    expect(tree).toMatchSnapshot();
});

2 个答案:

答案 0 :(得分:1)

@Ketcomp当您使用<Ideas />组件运行应用程序时,是否也会出现ReferenceError: PropTypes is not defined错误?

如果是这样,我想在尝试安装prop-types包时可能会发生一些事情。你的package.json看起来像什么?

答案 1 :(得分:0)

从{React 15到16} prop-types发生了一些变化 - 您可以看到其中一些here。也许carbon-components-react正在调用旧版本/样式?