2017-07-13 3 views
0

Possible duplicateシミュレーションイベントをクリックして、このテストパスをしようとして3日間、既に無駄なコンポーネントメソッド冗談/酵素

を呼び出すことはありません。 解決策を見つけることができませんでした。そのクリックをシミュレートしているようですが、 コンポーネントの関数を呼び出していません。

テストケース:

it('checking focus is called',() => { 
    const wrapper = shallow(<NexMultiselect {...mock_props} />); 

    wrapper.instance().c = {autosuggest: { input: {focus:()=>{}} }}; 
    wrapper.instance().focus = jest.fn(); 
    wrapper.find('.values_container').simulate('click'); 

    expect(wrapper.instance().focus).toHaveBeenCalled(); 
}); 

コンポーネントの機能をレンダリング:

return (
     <span className="multiselect"> 
      { label && id && 
      <div className="form__field-label"><label htmlFor={id}>{label}</label></div> } 
      <span onClick={this.focus} className="values_container"> 
       {renderedValues} 
       <NexAutocomplete 
        {...other} 
        onUpdate={this.onSearchUpdate} 
        data={this.state.data} 
        filter={[{ 
         searchOn: 'value', 
         display: 'display' 
        }]} 
        value={this.state.inputText} 
        preferValueFromProps={this.state.preferValueFromProps} 
        ref={c => this.c = c} 
        disabled={size && values.length >= size } 
       /> 
      </span> 
     </span> 
    ); 

答えて

0

onClick={() => this.focus()}onClick={this.focus}を変更すると、この問題を解決しました。

これはと呼ばれる代わりの mock function

されるのを防止 class method
関連する問題