2017-01-24 78 views
8

bileşenin çocuğu tepki de e.preventDefault alay nasılGerçekten bileşenin çocuğu tepki satır içi işlevi alay etmek nasıl bilmiyorum

Benim yığını: sinon, chai, enzyme;

Bileşen kullanımı:

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

Bileşen en işlemek: Burada

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

biz e.preventDefault() çağırır onClick var.'u arayamamak için <a href> (link) nasıl söylenir? onClick ile nasıl dalga geçebilirim?

Sığ kopya kurulum

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'), 
    } 
} 

Ve Test

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() 
    }); 

Testi çıkış hatası:

TypeError: Cannot read property 'preventDefault' of undefined 

cevap

19

budeneyin ben testlerde denemek ne Aşağıda

link.simulate('click', { 
    preventDefault:() => { 
    } 
}); 
+1

Teşekkürler, dostum. Benim için gerçekten büyük yardım –

+0

Size yardımcı olduğum için mutluyum :) – WitVault