2017-01-24 12 views
8

मैं वास्तव में नहीं जानता कि इनलाइन समारोह उपहास करने के लिए कैसे घटक के बच्चे प्रतिक्रिया मेंe.preventDefault नकली कैसे घटक के बच्चे प्रतिक्रिया में

मेरे ढेर: sinon, chai, enzyme;

घटक उपयोग:

<ListItem onClick={() => someFn()} /> 

घटक के प्रस्तुत करना:

render() { 
    return (
     <li> 
     <a href="#" onClick={e => { 
      e.preventDefault(); 
      this.props.onClick(); 
      }} 
     > whatever </a> 
     </li> 
    ); 
    } 

यहाँ हम onClick कि e.preventDefault() कॉल की है। e.preventDefault() पर कॉल करने के लिए <a href> (link) के लिए कैसे बताना है? मैं onClick कैसे नकल कर सकता हूं?

उथला प्रतिलिपि सेटअप

function setup() { 
    const someFn = sinon.stub(); 

    const component = shallow(
    <ListItem 
     onClick={() => { 
     someFn(); 
     }} 
    /> 
); 

    return { 
    component: component, 
    actions: someFn, 
    link: component.find('a'), 
    listItem: component.find('li'), 
    } 
} 

और परीक्षण

it('simulates click events',() => { 
    const { link, actions } = setup(); 
    link.simulate('click'); //Click on <a href> 
    expect(actions).to.have.property('callCount', 1); //would be good if we'll remove e.preventDefault() 
    }); 

टेस्ट के उत्पादन त्रुटि:

TypeError: Cannot read property 'preventDefault' of undefined 

उत्तर

19

इसप्रयास करें

मैं क्या परीक्षण में कोशिश है नीचे
link.simulate('click', { 
    preventDefault:() => { 
    } 
}); 
+1

धन्यवाद, आदमी। मेरे लिए वास्तव में बड़ी मदद –

+0

आपकी मदद करने में खुशी हुई :) – WitVault

संबंधित मुद्दे