Wie mock e.preventDefault in reagieren Komponente Kind

Ich weiß wirklich nicht, wie mock inline-Funktion in reagieren Komponente Kind

Mein stack: sinon, chai, enzyme;

Component-Verwendung:

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

Komponente machen:

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

Hier haben wir onClick aufruft e.preventDefault(). Wie Sie sagen, für <a href>(link) nicht aufrufen e.preventDefault()? Wie kann ich spotten, dass onClick?

Unter dem, was ich habe versuchen in tests:

Flache Kopie-setup -

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

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

Test output-error:

TypeError: Cannot read property 'preventDefault' of undefined
Schreibe einen Kommentar