2017-07-26 80 views
3

HOC如何測試(與jest + enzyme)使用recompose創建一個特殊下面的代碼:測試重新合成與酶

import {compose, withState, withHandlers} from 'recompose' 

const addCounting = compose(
    withState('counter', 'setCounter', 0), 
    withHandlers({ 
    increment: ({ setCounter }) =>() => setCounter(n => n + 1), 
    decrement: ({ setCounter }) =>() => setCounter(n => n - 1), 
    reset: ({ setCounter }) =>() => setCounter(0) 
    }) 
) 

在進行淺渲染,我有機會獲得countersetCounter性質,像這樣:

import {shallow} from 'enzyme' 

const WithCounting = addCounting(EmptyComponent) 
const wrapper = shallow(<WithCounting />) 

wrapper.props().setCounter(1) 
expect(wrapper.props().counter).toEqual(1) 

最大的問題是,我怎麼能訪問處理程序(incrementdecrementreset)和呼叫他們?它們不會出現在wrapper.props()

回答

3

所以,你可以通過首先找到實例訪問道具:

const EmptyComponent =() => null; 
const WithCounting = addCounting(props => <EmptyComponent {...props} />); 
const wrapper = mount(<WithCounting />); 

wrapper.find(EmptyComponent).props().setCounter(1); 
expect(wrapper.find(EmptyComponent).props().counter).toEqual(1);