Как сбросить количество вызовов функций jest mock перед каждым тестом
Я новичок в шутке, я пытаюсь использовать его для тестирования, была ли вызвана функция или нет. Я заметил насмешку.звонки.длина не сбрасывается для каждого теста, а накапливается. Как я могу сделать 0 перед каждым тестом? Я не хочу, чтобы мои следующие тесты зависели от результатов предыдущих.
Я знаю, что есть beforeEach в шутку-должен ли я использовать его? Каков наилучший способ сброса mock.звонки.длина? Спасибо.
код пример:
сумма.js:
import local from 'api/local';
export default {
addNumbers(a, b) {
if (a + b <= 10) {
local.getData();
}
return a + b;
},
};
сумма.тест.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 ответов
один из способов справиться с этим: очистить функцию макета после каждого теста:
добавить к сумме.тест.js:
afterEach(() => {
local.getData.mockClear();
});