微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

玩笑错误:未捕获 [TypeError: XXX is not a function]

如何解决玩笑错误:未捕获 [TypeError: XXX is not a function]

我在 component1 上有一个 onClick,它调用 component2 中的一个钩子,将道具传递给他:

组件 1:

function test(){
    return(
       <div
          onClick=(() => this.props.changeExample(this.props.example)}
       />
}

component2

changeExample(example){
    ...do some things
}

但是当我尝试使用以下代码测试 component1 的 onClick 事件时:

it("test onClick",() =>{
    let wrapper
     wrapper = shallow <component1 />
     const eventWrapper = wrapper.find("div")
     eventWrapper.simulate("click")
}

我收到以下错误

错误:未捕获 [TypeError: _this.props.changeExample 不是函数]

解决方法

您需要模拟该道具,然后您可以检查它是否已被调用,例如:

it("test onClick",() => {
  const mockOnClick = jest.fn();
  const wrapper = shallow <component1 changeExample={mockOnClick} />

  const eventWrapper = wrapper.find("div");
  eventWrapper.simulate("click");

  expect(mockOnClick).toHaveBeenCalledTimes(1);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。