Как сбросить функции подсчета функций Jest перед каждым тестом

Я новичок в Jest, я пытаюсь использовать его для тестирования, если вызывалась функция или нет. Я заметил, что mock.calls.length не перезагружается для каждого теста, а накапливается. Как я могу сделать это 0 перед каждым тестом? Я не хочу, чтобы мои следующие тесты зависели от результатов предыдущего.

Я знаю, что есть прежде всего в Jest - следует ли использовать его? Каков наилучший способ сброса mock.calls.length? Спасибо.

Пример кода:

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

Ответы

Ответ 1

Один из способов, который я нашел для этого: очистить функцию mock после каждого теста:

Чтобы добавить к Sum.test.js:

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

Ответ 2

Как отметил @AlexEfremov в комментариях. Возможно, вы захотите использовать clearAllMocks после каждого теста:

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

Имейте в виду, что это очистит счетчик вызовов каждой имеющейся у вас фиктивной функции, но это, вероятно, правильный путь.