2016-10-04 18 views
3

私は、酵素の浅いラッパーを使用して、私の成分のインスタンスを取得し、その上にクラス機能を呼び出そうとしています。 はTypeError:それは私に、このエラーが表示されます。tree.instance(...)をonCampaignSelected機能害虫/酵素による反応成分の試験

class ToolbarPage extends Component { 
    constructor(){ 
    super(); 
    this.onCampaignSelected = this.onCampaignSelected.bind(this); 
    this.state = { 
     item: null 
    } 
    } 

    onCampaignSelected (item) { 
    this.setState({item}) 
    } 

    render() { 
    return (
     <MyComponent onItemSelected={this.onCampaignSelected} /> 
    ) 
    } 
} 
function mapStateToProps(state){ 
    buttons: state.toolbar.buttons 
} 
export default connect(mapStateToProps)(ToolbarPage); 

ではない私のテストケースは、私も考え出しこの

import { shallow, mount } from 'enzyme'; 
import ToolbarPage from './ToolbarPage'; 
import configureStore from 'configureStore'; 

const store = configureStore(); 

const props = { 
store, 
isLoggedIn: false, 
messageCounter: 0 
} 

describe('<ToolbarPage />',() => { 
    it('allows to select campaign',() => { 
    const tree = shallow(<ToolbarPage {...props}/>); 
    tree.instance().onCampaignSelected(); 
    }) 
}) 

のように見えますラップされたコンポーネントであるため、ラップされたコンポーネントに対してこの関数を取得しません。どのように私はこの機能にアクセスするのですか?

+0

コードが正常であるようです。 'tree.debug()'は何を返しますか?また、 'props'が' undefined'というエラーを出さないのですか?提供されたコードサンプルで何かを見逃していませんか? –

答えて

0

shallowは、プロパティのすべてが&のメソッドで完全なセットをレンダリングしません。これは基本的なものです。「これは私が期待したものをレンダリングしましたか?テスト。

mountすべてをとし、必要なものをテストできるようにする必要があります。これは、コンポーネント間の相互作用をテストするためにコンポーネントの状態を操作するイベント処理をテストするために非常に便利です。

+1

それはインスタンスメソッドを呼び出す必要があります。 –