Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在react js中检查函数是否被调用?_Javascript_Reactjs_Jestjs_Jest Mock Axios - Fatal编程技术网

Javascript 如何在react js中检查函数是否被调用?

Javascript 如何在react js中检查函数是否被调用?,javascript,reactjs,jestjs,jest-mock-axios,Javascript,Reactjs,Jestjs,Jest Mock Axios,我正在尝试测试我的服务,它有一个功能无需提交即可保存 export const saveWithoutSubmit = async ( values, orderId, taskId, fseMsisdn, updateTaskListAfterFilter ) => { var obj = { remarks: values.remarks, requestedBy: localStorage.getItem("msisdn") }; tr

我正在尝试
测试
我的服务,它有一个功能
无需提交即可保存

export const saveWithoutSubmit = async (
  values,
  orderId,
  taskId,
  fseMsisdn,
  updateTaskListAfterFilter
) => {
  var obj = {
    remarks: values.remarks,
    requestedBy: localStorage.getItem("msisdn")
  };
  try {
    const response = await sendPostRequest(`${API_TASK_URL}closeSr`, {
      ...obj,
      saveWithoutSubmit: true
    });

    if (response && response.data && response.data.status.code !== "200") {
      error(response.data.result.message);
    } else {
      console.log(response);
      success(response.data.status.message);
      updateTaskListAfterFilter();
    }
  } catch (e) {
    if (e.response && e.response.data) {
      console.log(e.response.data.message);
      error(e.response.data.status.message);
    }
  }
};
我想检查是否调用了
success
error
方法?或者是否调用了
updateTaskListAfterFilter

我试过这样做

你能建议我如何测试
async
方法或post请求(使用mook数据)吗

这样我的测试用例就可以通过了。 我想检查我是否从promise获得成功,我的成功方法将被调用为else error


有更新吗

更新

您应该将
it(“不使用sumit保存”),()=>{
更改为
it(“不使用sumit保存”),async()=>{

然后,您通常使用
jest.fn()
创建一个模拟函数,并将其提供给另一个函数或组件

最后,等待调用mock函数:

await wait(() => {
  expect(mockUpdateTaskListAfterFilter).toBeCalled();
});

或者,您可以等待调用模拟之前发生的其他事件,例如调用其他模拟或页面上出现的事件,然后检查您的模拟是否被调用。

您看过Jest文档了吗?它解释了如何在测试中使用或更好。@David784如果您更改我的cod,那就太好了e sandboxany update?。!!这能回答你的问题吗?@frodo2975不,我只是在测试一个有一个http调用的函数。你如何用我告诉你的内容更新它,如果它仍然不起作用,请更新你的问题,我将再次尝试帮助你。你能粘贴完整的错误吗?看起来你没有给出
saveWithoutSubmit()
你的模拟函数。
找不到依赖关系:“axios”相对于“/src/remark.service.js”依赖关系NotFoundError:找不到依赖关系:“axios”相对于“/src/remark.service.js”在n
看到我在传递任何想法吗?为什么会发生这种情况
it("save without sumit", async () => {
    const sendPostRequest = jest.fn(() =>
      Promise.resolve({ data: { greeting: "hello there" } })
    );
    const updateTaskListAfterFilter = () => {};
    saveWithoutSubmit({}, updateTaskListAfterFilter);

    expect(updateTaskListAfterFilter).toBeCalled();
  });


it("save without sumit", async () => {
    const sendPostRequest = jest.fn(() =>
      Promise.resolve({ data: { greeting: "hello there" } })
    );

    const mockUpdateTaskListAfterFilter = jest.fn();
    const updateTaskListAfterFilter = () => {};
    saveWithoutSubmit({}, updateTaskListAfterFilter);

    expect(updateTaskListAfterFilter).toBeCalled();

    await wait(() => {
      expect(mockUpdateTaskListAfterFilter).toBeCalled();
    });
  });
await wait(() => {
  expect(mockUpdateTaskListAfterFilter).toBeCalled();
});