unit-testing - 如何在 react 组件的子组件中模拟 e.preventDefault

标签 unit-testing reactjs mocha.js sinon enzyme

嘿,我不知道如何在 React 组件的子组件中模拟内联函数

我的堆栈: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() ?我怎样才能 mock 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); //will be fine if we remove e.preventDefault()
  });

测试输出错误:

TypeError: Cannot read property 'preventDefault' of undefined

最佳答案

试试这个

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

关于unit-testing - 如何在 react 组件的子组件中模拟 e.preventDefault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41829301/

相关文章:

html - 如何将一个 div 放到另一行?

reactjs - 如何更新reducer的状态?

unit-testing - 通过排序测试集合相等性

vba - 我可以更改私有(private)方法的可见性以便对它们进行单元测试吗

java - 使用作为参数传递的集合的元素填充 HashMap

javascript - 未捕获的语法错误 : Unexpected token < in react-router with trailing slash in the end

javascript - 从 Node 使用 mocha js 中的全局窗口变量

angularjs - Angular、Sinon、Promise

javascript - 如何配置 mocha 以打印错误的完整堆栈跟踪?

java - JMockit 模拟返回 String 而不是提供的 List<String>