当我断言被调用的模拟函数的次数时,导入的模拟函数总是返回组合的调用数。
例如,第一个测试套件一次具有一个称为模拟函数import { get } from 'axios'
的函数,而预期的toHaveBeenCalledTimes
为1
。但是,第二个测试套件,再次调用get
和toHaveBeenCalledTimes
的函数是2
而不是1
。
如何使模拟功能toHaveBeenCalledTimes
返回每个测试服的刷新计数?
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();
});
});
});
答案 0 :(得分:1)
mockFn.mockReset()
才成功,https://jestjs.io/docs/en/mock-function-api#mockfnmockreset
执行嘲笑fn.mockClear()的所有操作,并删除任何模拟的返回值或实现。
beforeEach(() => {
get.mockReset();
});