Tôi mới sử dụng Jest, tôi đang cố gắng sử dụng nó để kiểm tra xem một hàm có được gọi hay không. Tôi nhận thấy mock.calls.length không đặt lại cho mọi bài kiểm tra mà là tích lũy. Làm thế nào tôi có thể đưa nó về 0 trước mỗi bài kiểm tra? Tôi không muốn các bài kiểm tra tiếp theo của mình phụ thuộc vào kết quả của lần trước.
Tôi biết có beforeEach in Jest - tôi có nên sử dụng nó không? Cách tốt nhất để đặt lại mock.calls.length là gì? Cảm ơn bạn.
Một ví dụ về mã:
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()
nó không hoạt động.