Тестирование Jest Snapshot Redux и покрытие

При тестировании моментального снимка компонента я хочу протестировать только сам компонент, а не действия, состояние или функцию подключения, которые есть в 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

Итак, если у вас есть простой тест, подобный этому:

import { EarningsInfo } from '../components/EarningsInfo';

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

  expect(tree).toMatchSnapshot();
});

Покрытие кода сообщает, что вы тестируете только 25% файла. Я уверен, что это работает так, как задумано.

Мой вопрос в два раза

  1. Правильно ли я думаю, что mapStateToProps, mapActionsToProps и connect не нужно тестировать?
  2. Есть ли способ игнорировать имя функции в целях покрытия?

person Riley Bracken    schedule 28.09.2016    source источник
comment
На самом деле после просмотра этого redux.js.org/docs/recipes/ Думаю, я прав, думая, что тесты должны быть на самом компоненте, а не на других функциях. Итак, как лучше всего игнорировать имена функций в Jest?   -  person Riley Bracken    schedule 28.09.2016
comment
Лично я бы экспортировал компонент EarningsInfo как именованный экспорт (в дополнение к экспорту подключенного компонента по умолчанию) и просто протестировал необработанный компонент EarningsInfo. Затем проведите несколько интеграционных тестов, чтобы убедиться, что все правильно соединено.   -  person kentcdodds    schedule 28.09.2016


Ответы (1)


  1. connect не следует тестировать, поскольку собственные тесты react-redux уже покрывают это. Если mapStateToProps или mapActionsToProps имеют какую-либо нестандартную/сложную/бизнес-логику, то может иметь смысл их протестировать.

  2. Да, но он может быть немного хрупким — http://blog.dmbcllc.com/es2015-code-coverage-and-jest-react-js-unit-testing/

Не беспокойтесь о 100% покрытии кода, сосредоточьтесь на том, что является критическим И может быть хорошо/легко протестировано с помощью модульного тестирования.

person Colin    schedule 30.10.2016