Модульный тест не достигает 100% покрытия IF / ELSE не принимается в импорте - PullRequest
0 голосов
/ 24 июня 2019

Юнит-тест с jest / Enzyme или React-Native-Testing-Library никогда не достигает 100% покрытия кода при проблемах с импортом, некоторые импорт отображает предупреждение IEEIEIE, если / еще не принято

Эти модули находятся в node_modules (а node_modules включается в coverPathIgnorePatterns и исключают из collectCoverageFrom) или в пользовательских модулях, которые даже не имеют операторов if / else

import React from 'react';
import { cleanup, render } from 'react-native-testing-library';
import ItemListaComprobante from './ItemListaComprobante';

describe('test container ConfiguracionPin', () => {
    let wrapper;
    const props = {
        label: 'Test',
        value: 'Test',
    };
    afterEach(() => cleanup);
    beforeEach(() => {
        wrapper = render(<ItemListaComprobante {...props} />);
    });
    test('test container ConfiguracionPin render properly ', () => {
        expect(wrapper).toMatchSnapshot();
    });
});

import React, { memo } from 'react';
import { Text } from 'react-native'; // (without IEEI)
import PropTypes from 'prop-types';
import { // IEEI
    Left,
    Right,
    CardItem,
} from 'native-base';

const propTypes = {
    label: PropTypes.string.isRequired,
    value: PropTypes.string.isRequired,
};

const ItemListaComprobante = ({ label, value }) => (
    <CardItem
        bordered
        borderedWhite
    >
        <Left>
            <Text>{label}</Text>
        </Left>
        <Right>
            <Text
                bold
                numberOfLines={1}
                ellipsizeMode="tail"
            >
                {value}
            </Text>
        </Right>
    </CardItem>
);

ItemListaComprobante.propTypes = propTypes;

export default memo(ItemListaComprobante);

Мои настройки шутки

module.exports = {
verbose: true,
preset: 'react-native',
testEnvironment: 'jsdom',
transform: { '^.+\\.js$': '<rootDir>/node_modules/react-native/jest/preprocessor.js' },
setupFiles: ['<rootDir>/jest.setup.js'],
transformIgnorePatterns: ['/node_modules/*.js'],
coveragePathIgnorePatterns: [
    '<rootDir>/index.js',
    '<rootDir>/App.js',
    '<rootDir>/commitlint.config.js',
    '/node_modules/',
    'jest.setup.js',
    'ReactotronConfig.js',
    'LogUtils.js',
    'jest.config.js',
    'rn-cli.config.js',
    'transformer.js',
    'super-wallet/coverage/lcov-report',
    'Str.js',
],
setupFilesAfterEnv: [
    '<rootDir>/__mocks__/react-native-camera.js',
    '<rootDir>/__mocks__/react-native-fetch-blob.js',
    '<rootDir>/__mocks__/react-native-firebase.js',
    '<rootDir>/__mocks__/react-navigation.js',
    '<rootDir>/__mocks__/react-native-reactotron.js',
    '<rootDir>/__mocks__/react-native-user-agent.js',
    '<rootDir>/__mocks__/osiris.js',
    '<rootDir>/__mocks__/react-native-check-app-install.js',
    '<rootDir>/__mocks__/react-native-image-crop-picker.js',
    '<rootDir>/__mocks__/react-native-app-link.js',
],
collectCoverageFrom: ['**/*.{js,jsx}', '!**/node_modules/**', '!**/vendor/**'],
coverageThreshold: {
    global: {
        branches: 80,
        functions: 80,
        lines: 80,
        statements: -10,
    },
},

};

Мои настройки babelrc

    {
  "presets": ["module:metro-react-native-babel-preset"]
}

Буду очень признателен, если кто-нибудь сможет мне помочь, я просмотрел документацию по jest / istanbul и ферменту и ничего не видел, даже здесь я также искал на случай, если у кого-то возникла та же проблема, что и у меня

Это ошибка в охвате Стамбула

Ошибка печати отчета в Стамбуле

1 Ответ

0 голосов
/ 24 июня 2019

Нам нужен снимок экрана с ошибкой, которую вы получаете.

...