2016-12-12 4 views
0

Итак, документы предлагают использовать магазин-макет, но он просто записывает все действия и не связан ни с одним редуктором. Я просто хочу, чтобы подразделение тестировало компонент, и видно, что, если действие было отправлено, оно изменилось - что-то вроде (самым общим способом для описания):unit testing in redux

expect (counter.props) .to.equal (1)
отправки (приращение())
планирующий (counter.props) .to.equal (2)

какие-либо идеи? спасибо

ответ

0

Здесь есть пара факторов.

Во-первых, даже при нормальном рендеринге и использовании диспетчерское действие не сразу обновляет реквизиты компонента. Компоненты оболочки, сгенерированные connect, сразу же уведомляются после отправки действия, но фактический повторный рендеринг обернутого компонента обычно переносится и помещается в очередь с помощью React. Таким образом, отправка действия в одной строке не будет отражена в реквизитах на следующей строке.

Во-вторых, в идеале «простой» компонент не должен знать ничего о самом Редксе. Он просто знает, что он получает некоторые данные в качестве реквизита, и когда происходит событие, подобное нажатию кнопки, вызывает некоторую функцию, которую он дал в качестве опоры. Таким образом, тестирование компонента должно быть независимым от тестирования любых связанных с Redux.

Если это помогает, у меня есть целая куча статей на React and Redux-related testing как часть моего React/Redux links list. Некоторые из этих статей могут помочь вам дать некоторые идеи.

+0

Кроме того, многие тесты в реакции-редукции для 'connect' являются достаточно точными отправными точками для написания теста. –

+0

спасибо, так какой рекомендуемый подход? Я подумываю об одном модуле тестирования моих компонентов как о том, как ом-редукция-неосведомленный-реквизит, и отдельно тестирую мое состояние с помощью модульного тестирования редукторов? – user3139602