Неправильное покрытие кода в Jest после обновления React-Native - PullRequest
0 голосов
/ 02 ноября 2018

Я просто обновил свой проект с реакции 0.53.3 до 0.57.3. После обновления мои тесты шутки больше не проходили, потому что мои пороги покрытия больше не были достигнуты. Это определенно ошибка конфигурации с моей стороны, но я просто не могу понять, что мне нужно настроить, чтобы исправить проблему. Для этой проблемы я представляю самый простой файл, который я могу выявить проблему. Проблема возникает во всем моем проекте, но я не могу поделиться этим.

Любая помощь очень ценится. Спасибо!

Зависимости, например

{
  "dependencies": {
    "prop-types": "15.6.2",
    "react": "16.6.0-alpha.8af6728",
    "react-native": "0.57.3"
  },
  "devDependencies": {
    "babel-cli": "6.26.0",
    "babel-eslint": "10.0.1",
    "babel-jest": "23.6.0",
    "babel-polyfill": "6.26.0",
    "babel-preset-react-native": "^4.0.1",
    "eslint": "5.7.0",
    "jest": "23.6.0",
    "jest-cli": "23.6.0",
    "metro-react-native-babel-preset": "0.48.1",
    "react-test-renderer": "16.6.0-alpha.8af6728"
  }
}

Jest Config

{
  "jest": {
    "transform": {
      "^.+\\.(js)$": "<rootDir>/node_modules/react-native/jest/preprocessor.js"
    },
    "coverageDirectory": "./coverage/jest",
    "collectCoverage": true,
    "collectCoverageFrom": [
      "src/components/**/*.js",
      "src/lib/components/**/*.js",
    ],
    "coverageThreshold": {
      "global": {
        "statements": 90,
        "branches": 90,
        "functions": 90,
        "lines": 90
      }
    },
    "preset": "react-native"
  }
}

Тестовый файл

import 'react-native';
import React from 'react';
import renderer from 'react-test-renderer';
import H1 from '../../../../src/lib/components/H1';

describe('H1', () => {
  it('should render correctly', () => {
    const tree = renderer.create(<H1>Title</H1>).toJSON();
    expect(tree).toMatchSnapshot();
  });
});

Файл проверен

import React, { Component } from 'react';
import PropTypes from 'prop-types';

import Text from '../../containers/TextContainer.js';
import { TEXT_LIGHT } from '../colors';

export default class H1 extends Component {
  static propTypes = {
    children: PropTypes.node.isRequired,
    color: PropTypes.string,
  }

  static defaultProps = {
    color: TEXT_LIGHT,
  }

  render() {
    return (
      <Text
        color={this.props.color}
        fontSizeRatio={3.4}
      >
        {this.props.children}
      </Text>
    );
  }
}

Результаты покрытия для файла

  • Заявления: 83,87%
  • Филиалы: 60,78%
  • Функции: 86,67%
  • Линии: 100%
  • Непокрытые строки: 24 (импорт {TEXT_LIGHT} из '../colors';)

Ожидаемое поведение

Мой охват кода, на большинстве файлов должен быть 100% во всех категориях.

...