2016-12-29 16 views
0

我使用pepperoni-app-kit作爲起點,現在有智能組件與react-redux相連,我想用jess來測試。我的問題是調度函數,當使用連接連接被調用時,我的模塊在測試下作爲調度(動作),但當調用一層(無連接)總是被稱爲調度(狀態,行動)。如何在不使用connect()的情況下將redux派發函數傳遞給智能組件?

所以我可以用這樣的線在我的測試代碼:

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

,但現在我想派遣函數傳遞到我的智能組件是這樣的:

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

所以我的問題是我傳遞的dispatch函數需要狀態和動作,但是在被測組件(通常在react-redux中調用)內,調度只能用一個參數action來調用。 connect()函數告訴調度函數使用狀態存儲的哪些部分,但我無法弄清楚如何在連接組件之外執行該操作。

回答

0

您可以嘗試的dispatch的第一個參數綁定到你的店:

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

我想通了。看到我的答案。 – ukayer

0

我想我想通了這一點。

在pepperoni-app-kit中,提供了一個測試功能,僅供測試代碼使用,可通過所有減速器進行操作。它恰好被稱爲「dispatch」並且接受兩個參數(state,action),這意味着它實際上是一個reducer。

在我的代碼中(也來自pepperoni-app-kit)我使用dispatch函數調度action,只需要傳遞action就可以了,因爲它已經知道它正在處理的商店和商店知道的狀態。

我不是試圖將調度(狀態,動作)功能傳遞給我的組件(真的是reducer),而是我自己導入了一個redux存儲,現在將store.dispatch函數傳遞給被測單元。

相關問題