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

188
Views
How to reset Jest mock functions calls count before every test

I'm new to Jest, I'm trying to use it for testing if a function was called or not. I noticed the mock.calls.length is not resetting for every test but accumulating. How can I make it 0 before every test? I don't want my next tests depends on the results of the previous.

I know there is beforeEach in Jest - should I use it? What is the best way to reset mock.calls.length? Thank you.

A code example:

Sum.js:

import local from 'api/local';

export default {
  addNumbers(a, b) {
    if (a + b <= 10) {
      local.getData();
    }
    return a + b;
  },
};

Sum.test.js

import sum from 'api/sum';
import local from 'api/local';
jest.mock('api/local');

// For current implementation, there is a difference 
// if I put test 1 before test 2. I want it to be no difference

// test 1
test('should not to call local if sum is more than 10', () => {
  expect(sum.addNumbers(5, 10)).toBe(15);
  expect(local.getData.mock.calls.length).toBe(0);
});

// test 2
test('should call local if sum <= 10', () => {
  expect(sum.addNumbers(1, 4)).toBe(5);
  expect(local.getData.mock.calls.length).toBe(1);
});
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

One way I found to handle it: to clear mock function after each test:

To add to Sum.test.js:

afterEach(() => {
  local.getData.mockClear();
});

If you'd like to clear all mock functions after each test, use clearAllMocks

afterEach(() => {
  jest.clearAllMocks();
});
over 4 years ago · Santiago Trujillo Report

0

As @AlexEfremov pointed in the comments. You may want to use clearAllMocks after each test:

afterEach(() => {
    jest.clearAllMocks();
});

Take in mind this will clear the call count of every mock function you have, but that is probably the right way.

over 4 years ago · Santiago Trujillo Report

0

You can configure Jest to reset or clear mocks after each test by putting one of these parameters this into your jest.config.js:

module.exports = {
  resetMocks: true,
};

or

module.exports = {
  clearMocks: true,
};

Here is the documentation:

https://jestjs.io/docs/en/configuration#resetmocks-boolean

resetMocks [boolean]

Default: false

Automatically reset mock state before every test. Equivalent to calling jest.resetAllMocks() before each test. This will lead to any mocks having their fake implementations removed but does not restore their initial implementation.

https://jestjs.io/docs/configuration#clearmocks-boolean

clearMocks [boolean]

Default: false

Automatically clear mock calls, instances and results before every test. Equivalent to calling jest.clearAllMocks() before each test. This does not remove any mock implementation that may have been provided.

over 4 years ago · Santiago Trujillo Report
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!