2016-12-29 1 views
0

Я использую pepperoni-app-kit в качестве отправной точки, и теперь у меня есть интеллектуальные компоненты, связанные с реакцией-редукцией, которую я бы хотел протестировать с помощью шутки. Моя проблема - это функция отправки, которая при подключении с помощью connect вызывается из моего тестируемого модуля как отправка (действие), но при вызове одного уровня вверх (без подключения) всегда будет вызываться как отправка (состояние, действие).Как передать функцию dispix dispatch в интеллектуальный компонент без использования connect()?

Так что я могу использовать линию, как это в моем тестовом коде:

const [newState] = dispatch(initialState, Actions.update_timeAtProperty(0)); 

, но теперь я хочу передать функцию отправки в мой смарт-компонент, как это:

const tree = renderer.create(
    <BeaconView dispatch={dispatch} /> 
).toJSON(); 
expect(tree).toMatchSnapshot(); 

так что моя проблема заключается в том, что передаваемая функция, которую я передаю, требует как состояния, так и действия, но в пределах тестируемого компонента (который обычно называется в реакции-редукции) отправка только когда-либо вызывается с помощью одного аргумента, действия. Функция connect() сообщает функции диспетчеризации, какие части моего хранилища состояний использовать, но я не могу понять, как это сделать, если вне подключенного компонента.

ответ

0

Вы можете попробовать связывание с первым аргументом dispatch в магазин:

<BeaconView dispatch={dispatch.bind(null, store)} /> 
+0

Я понял это. См. Мой ответ. – ukayer

0

Я думаю, что я понял это.

В наборе pepperoni-app-kit имеется тестовая функция, предназначенная для использования только тестовым кодом, который передает действие через все редукторы. Это называется «отправка» и принимает два аргумента (состояние, действие), что означает, что это действительно редуктор.

В моем коде (также полученном из pepperoni-app-kit) Я отправляю действия, используя функцию отправки, которая требует только того, чтобы действие было передано, потому что оно уже знает, в каком хранилище он имеет дело, и магазин знает о состоянии.

Вместо того чтобы пытаться передать функцию отправки (состояние, действие) до моих компонентов (на самом деле редуктор), я импортировал сам магазин redux и теперь передаю функцию store.dispatch до тестируемого устройства.

Смежные вопросы