2017-01-24 10 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(). Как определить для <a href> (link), чтобы не звонить e.preventDefault()? Как я могу издеваться над этим 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() 
    }); 

ошибка вывода Test в:

TypeError: Cannot read property 'preventDefault' of undefined 

ответ

19

Попробуйте

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

Спасибо, человек. Очень большая помощь для меня –

+0

Рад помочь вам :) – WitVault