我是Jest的新手,我正在尝试将其用于测试是否调用了函数。我注意到对ock.calls.length来说并不是每次测试都会重置,而是不断积累。每次测试前如何将其设置为0?我不希望我的下一个测试取决于上一个的结果。
我知道Jest中有beforeEach-我应该使用它吗?重置模拟的最佳方法是什么?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()
时不起作用。