Тесты моментальных снимков React Jest не выполняются, если включен флаг --coverage - PullRequest
1 голос
/ 24 марта 2020

Я создал приложение React (v16.13.1) и тестирую его с помощью Jest (v25.1.0). Когда я запускаю npm test, все тесты проходят нормально, но когда я запускаю npm test -- --coverage, все компоненты возвращают undefined, и все тесты моментальных снимков не выполняются.

Это происходит со всеми компонентами в приложении. Типичный пример компонента, демонстрирующего такое поведение:

src/components/Card.js

import React from 'react';
import PropTypes from 'prop-types';

const Card = ({ title, subtitle, children }) => (
  <div className="card">
    {title && <div className="card-header">{title}</div>}
    <div className="card-body">
      {subtitle && <div className="small mb-3">{subtitle}</div>}
      <div className="mt-3">{children}</div>
    </div>
  </div>
);

Card.propTypes = {
  title: PropTypes.string,
  subtitle: PropTypes.string,
  children: PropTypes.node.isRequired
};

Card.defaultProps = {
  title: null,
  subtitle: null
};

export default Card;

src/components/Card.test.js

import React from 'react';
import renderer from 'react-test-renderer';

import Card from './Card';

let tree;

describe('without title or subtitle', () => {
  beforeAll(() => {
    tree = renderer.create(
      <Card>
        <p>Hello there</p>
      </Card>
    );
  });

  it('renders correctly', () => {
    expect(tree).toMatchSnapshot();
  });
});

describe('with title and subtitle', () => {
  beforeAll(() => {
    tree = renderer.create(
      <Card title="Test" subtitle="This is a test">
        <p>Hello there</p>
      </Card>
    );
  });

  it('renders correctly', () => {
    expect(tree).toMatchSnapshot();
  });
});

Все эти тесты проходили просто отлично, но теперь они терпят неудачу, но только когда флаг coverage включен.

Что я делаю не так?

1 Ответ

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

Я думаю, что видел это раньше: для компонентов без состояния вам может потребоваться определить свойство displayName. https://github.com/facebook/jest/issues/1824#issuecomment -250478026

...