React Jest Test покрытие показывает непроверенную линию (реквизиты по умолчанию) - PullRequest
0 голосов
/ 23 марта 2020

Я запускаю тест на компонент простой кнопки. Все работает нормально, однако в тестовом покрытии я получаю непроверенную строку (21: onClick: () => { return true }). Эта строка указывает на функцию поддержки по умолчанию. Как я могу убедиться, что покрыл юнит-тест для этой линии?

Мой компонент:

import React from 'react';
import { Link } from 'react-router-dom';
import PropTypes from 'prop-types';

export const Button = (props) => {
  return (
    <Link 
      to={props.link} 
      className={props.classes}
      onClick={props.onClick}
    >
      {props.title}
    </Link>
  );
};

Button.defaultProps = {
  link: '/',
  title: 'Home',
  classes: 'btn btn--primary',
  onClick: () => { return true }
}

Button.propTypes = {
  link: PropTypes.string,
  title: PropTypes.string,
  classes: PropTypes.string,
  onClick: PropTypes.func
};

export default Button;

Мой тест:

import React from 'react';
import { shallow } from 'enzyme';
import { Button } from '../../../components/partials/Button';

test('should render button', () => {

  const wrapper = shallow(<Button link='/test' title='Home' classes='btn btn--primary' onClick={ () => { return true }} />);
  expect(wrapper).toMatchSnapshot();
  const props = wrapper.props();
  expect(props.to).toBe('/test');
  expect(props.className).toBe('btn btn--primary');
  expect(props.onClick).toBe(props.onClick);
  expect(props.children).toBe('Home');
});


test('should have default onClick', () => {
  expect(Button.defaultProps.onClick).toBeDefined();
});

1 Ответ

0 голосов
/ 23 марта 2020

Вам нужно запустить функцию onClick, чтобы она учитывала покрытие. Итак, сделайте тест, который имитирует событие нажатия на кнопку, которое вызовет ее функцию onClick:

it('does something when clicked', () => {
    const wrapper = shallow(<Button link='/test' title='Home' classes='btn btn--primary' onClick={ () => { return true }} />);

    wrapper.simulate('click');
    expect(...);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...