Как правильно экспортировать дважды для целей ферментного тестирования - PullRequest
1 голос
/ 10 ноября 2019

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

class MyComponent extends Component {
 ...
}

export {MyComponent};

export default withRouter(
  connect(
    mapStateToProps,
    mapDispatchToProps
  )(injectIntl(MyComponent))
);

Затем в моем тестовом файле я импортирую несвязанную версию:

import {MyComponent} from "./MyComponent"

const component  = shallow(<MyComponent />);

Это правильный способ экспорта компонентов? Что вы используете для модульного тестирования подключенного компонента? Сколько времени это экономит, если не использовать фиктивный магазин для юнит-тестов? Мои тесты очень трудоемки, потому что все используют фиктивный магазин для всех подключенных компонентов.

1 Ответ

1 голос
/ 10 ноября 2019

Ваш подход правильный, хотя синтаксис, к которому я привык, был бы export class MyComponent extends Component {...}.

На мой взгляд, подключенные компоненты на самом деле не нуждаются в модульных тестах, так как вы должны верить, что все вовлеченныедетали (mapStateToProps, mapDispatchToProps, connect) работают из коробки. В конце концов, это из внешней библиотеки.

Ни mapStateToProps, ни mapDispatchToProps не должны быть слишком сложными, mapStateToProps делегирует сложные вещи селекторам (которые вы можете выполнить модульным тестированием независимо), а mapDispatchToProps просто помещаетредуцировать действия в объекте или выполнять небольшое отображение (когда действия отправляются с аргументами, отличными от того, что компонент React видит, например). В последнем случае вы можете экспортировать mapDispatchToProps и тестировать его по отдельности, имитируя только функцию диспетчеризации.

Это гораздо меньше усилий, чем объединение всех насмешек для реального подключенного компонента, который фермент может mount(). Однако иногда это может быть необходимо, но я считаю это скорее интеграционным тестом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...