저는 Jest를 처음 접했고 함수가 호출되었는지 여부를 테스트하는 데 사용하려고합니다. mock.calls.length가 모든 테스트에 대해 재설정되지 않고 누적된다는 것을 알았습니다. 매 테스트 전에 어떻게 0으로 만들 수 있습니까? 다음 테스트는 이전 결과에 따라 달라지는 것을 원하지 않습니다.
Jest에 beforeEach가 있다는 것을 알고 있습니다. 사용해야합니까? 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);
});
local.mockClear()
하면 작동하지 않습니다.