как проверить, вызывается функция или нет в реаги js? - PullRequest
0 голосов
/ 15 февраля 2020

Я пытаюсь test мой сервис, который имеет одну функцию saveWithoutSubmit

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 называется или нет?

Я пробовал вот так

https://codesandbox.io/s/ecstatic-currying-5q1b8

describe("remark service test", () => {
  const fakeAxios = {
    get: jest.fn(() => Promise.resolve({ data: { greeting: "hello there" } }))
  };
  it("save without sumit", () => {
    const updateTaskListAfterFilter = () => {};
    saveWithoutSubmit({}, updateTaskListAfterFilter);

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

Подскажите пожалуйста как я буду проверить async методы или отправить запрос (используя данные mook) ??

, чтобы мои тестовые примеры были пройдены. Я хочу проверить, добился ли я успеха от обещания, что мой метод успеха будет вызываться, иначе ошибка

любое обновление? .. !!

обновление

https://codesandbox.io/s/ecstatic-currying-5q1b8

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

1 Ответ

0 голосов
/ 16 февраля 2020

Вы должны изменить it("save without sumit", () => { на it("save without sumit", async () => {.

Затем вы обычно используете jest.fn() для создания фиктивной функции, которую вы передадите другой функции или компоненту.

Наконец, дождитесь вызова ложной функции:

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

В качестве альтернативы вы можете дождаться какого-то другого события, которое, как вы знаете, произойдет до того, как будет вызван ваш макет, например, какого-нибудь другого вызываемого макета или чего-то, появляющегося на странице, и затем проверьте, что ваш макет был вызван.

...