Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

191
Vistas
jest mock function dont work in my test case

when i import modules, i mock them with jest.mock() api :

import analytics, { fakeAnalyticsApi } from "../../middleware/analytics";
jest.mock("../../middleware/analytics", () => {
  const orginalModules = jest.requireActual("../../middleware/analytics");
  return {
    __esModule: true,
    ...orginalModules,
    fakeAnalyticsApi: jest.fn(() => Promise.resolve("success")),
  };
});

then when i call "fakeAnalyticsApi" function Its original version is executed.

full test file:

import analytics, { fakeAnalyticsApi } from "../../middleware/analytics";
jest.mock("../../middleware/analytics", () => {
  const orginalModules = jest.requireActual("../../middleware/analytics");
  return {
    __esModule: true,
    ...orginalModules,
    fakeAnalyticsApi: jest.fn(() => Promise.resolve("success")),
  };
});
const create = () => {
  const store = {
    getState: jest.fn(() => {}),
    dispatch: jest.fn(),
  };
  const next = jest.fn();
  const invoke = (action) => analytics(store)(next)(action);
  return { store, next, invoke };
};
// suite test
describe("analytics middleware", () => {
  test("should pass on irrelevant keys", () => {
    const { next, invoke } = create();
    const action = { type: "IRREVELANT" };
    invoke(action);
    expect(next).toHaveBeenCalledWith(action);
    expect(fakeAnalyticsApi).not.toHaveBeenCalled();
  });
  test("should make an analytics API call", () => {
    const { next, invoke } = create();
    const action = {
      type: "REVELANT",
      meta: {
        analytics: {
          event: "REVELANT",
          data: { extra: "stuff" },
        },
      },
    };
    invoke(action);
    expect(fakeAnalyticsApi).toHaveBeenCalled();
    expect(next).toHaveBeenCalledWith(action);
  });
});

and I get the following error:

● analytics middleware › should make an analytics API call

    expect(jest.fn()).toHaveBeenCalled()

    Expected number of calls: >= 1
    Received number of calls:    0

      39 |     };
      40 |     invoke(action);
    > 41 |     expect(fakeAnalyticsApi).toHaveBeenCalled();
         |                              ^
      42 |     expect(next).toHaveBeenCalledWith(action);
      43 |   });
      44 | });

I log a statement in orginal version function of "fakeAnalyticsApi", it seems orginal version was call because the console log the statement

about 4 years ago · Juan Pablo Isaza
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda