Javascript 如何使Jest mocked函数在每个测试套件中都有一个新的计数?

Javascript 如何使Jest mocked函数在每个测试套件中都有一个新的计数?,javascript,jestjs,Javascript,Jestjs,当我断言模拟函数被调用的次数时,导入的模拟函数总是返回调用的组合次数 例如,第一个测试套件有一个名为模拟函数的函数import{get}from'axios'一次,预期的tohavencalledtimes为1。但是,第二个测试套件,再次调用get和tohavebeincalledtimes的函数是2,而不是1 如何使模拟函数返回每个测试套件的刷新计数 describe('fetchAData', () => { it('should return the right A data

当我断言模拟函数被调用的次数时,导入的模拟函数总是返回调用的组合次数

例如,第一个测试套件有一个名为模拟函数的函数
import{get}from'axios'
一次,预期的
tohavencalledtimes
1
。但是,第二个测试套件,再次调用
get
tohavebeincalledtimes
的函数是
2
,而不是
1

如何使模拟函数
返回每个测试套件的刷新计数

describe('fetchAData', () => {
    it('should return the right A data response', (done) => {
        const sampleResponse = { data: dataASample };

        get.mockImplementationOnce(() => {
            return Promise.resolve(sampleResponse);
        });

        fetchAData().then(() => {
            expect(get).toHaveBeenCalledTimes(1);

            done();
        });
    });
});

describe('fetchBData', () => {
    it('should return the right B data response', (done) => {
        const sampleResponse = { data: dataBSample };

        get.mockImplementationOnce(() => {
            return Promise.resolve(sampleResponse);
        });

        fetchBData().then(() => {
            expect(get).toHaveBeenCalledTimes(1); // -> Return `2`
            done();
        });
    });
});
mockFn.mockReset()
刚刚成功

执行mockFn.mockClear()所做的一切,并删除任何模拟的返回值或实现


如果有人需要,
jest.resetAllMocks()
会对所有模拟函数执行相同的操作。
beforeEach(() => {
    get.mockReset();
});