Unit testing 在作为道具传递的函数上调用Jest spyOn

Unit testing 在作为道具传递的函数上调用Jest spyOn,unit-testing,jestjs,Unit Testing,Jestjs,我有一个onSubmit函数作为道具传递给子组件 我怎么能监视它?这是我尝试过的事情之一 const onSubmitMock = jest.fn() const wrapper = shallow( <Form onSubmit={onSubmitMock} /> ) const spy = jest.spyOn(wrapper.instance(), onSubmitMock); 同样的事情也发生了。您可以使用expect(onSubmitMock).t

我有一个onSubmit函数作为道具传递给子组件

我怎么能监视它?这是我尝试过的事情之一

const onSubmitMock = jest.fn()

  const wrapper = shallow(
    <Form onSubmit={onSubmitMock} />
  )

  const spy = jest.spyOn(wrapper.instance(), onSubmitMock);
同样的事情也发生了。

您可以使用
expect(onSubmitMock).tohaveEncalled()直接在模拟提交事件之后

您得到的错误可能是因为spyOn返回jest.fn()

这不起作用,因为我想模拟单击输入类型提交按钮来触发事件,而不是直接模拟事件,以及wrapper.find('input[type=“submit”]”)。simulate('click')不起作用。您是否能够
控制台.log(wrapper.instance()[onSubmitMock])
并查看它是否存在。另外,传递给spy的方法名似乎需要是string
constSpy=jest.spyOn(wrapper.instance(),'onSubmitMock')
const spy = jest.spyOn(wrapper.instance(), 'onSubmit');