【问题标题】:Jest Error: Uncaught [TypeError: XXX is not a function]开玩笑错误:未捕获 [TypeError:XXX 不是函数]
【发布时间】:2021-03-05 17:52:00
【问题描述】:

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

组件 1:

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

组件2

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 不是函数]

【问题讨论】:

    标签: javascript jestjs automated-tests preact


    【解决方案1】:

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

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

    【讨论】:

    • 效果很好!但是有一种方法可以从 component2 中定义的钩子中获取一些信息吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 2021-02-26
    • 2020-02-24
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多