Jest Snapshot测试Redux&覆盖

时间:2016-09-28 17:17:43

标签: reactjs react-native redux jestjs

快照测试组件时,我只想测试组件本身,而不是Redux中的操作,状态或连接功能。这是因为我在其他地方测试了这些功能。

这会扰乱您的代码覆盖率,因为它希望您测试所有函数。

例如:

export const EarningsInfo = ({ close }) => ( /* ... */ );

const mapStateToProps = _ => ({});

const mapActionsToProps = dispatch => ({
  close: _ => dispatch(closeModal()),
});

export default connect(mapStateToProps, mapActionsToProps)(EarningsInfo);

Jest希望你测试

  1. earningsInfo
  2. mapStateToProps
  3. mapActionsToProps
  4. connect
  5. 所以如果你有这样一个简单的测试:

    import { EarningsInfo } from '../components/EarningsInfo';
    
    it('renders correctly', () => {
      const tree = renderer.create(
        <EarningsInfo close={ () => null } />
      ).toJSON();
    
      expect(tree).toMatchSnapshot();
    });
    

    代码覆盖率报告您只测试了25%的文件。我确信这是按预期工作的。

    我的问题是两次

    1. 我认为mapStateToPropsmapActionsToPropsconnect不需要进行测试。
    2. 是否有办法忽略功能名称以进行覆盖?

1 个答案:

答案 0 :(得分:1)

  1. connect不应该被测试,因为react-redux自己的测试已经涵盖了这一点。如果mapStateToPropsmapActionsToProps具有任何非标准/复杂/业务逻辑,那么测试它们可能是有意义的。

  2. 是的,但可能有点脆弱 - http://blog.dmbcllc.com/es2015-code-coverage-and-jest-react-js-unit-testing/

  3. 不要担心100%的代码覆盖率,关注重要的事情并且可以通过单元测试很好/轻松地进行测试。