Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

186
Views
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
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!