如何为每个测试重置 fetch-mock?

jus*_*rld 5 unit-testing fetch reactjs jestjs fetch-mock

我使用 Jest 和 进行了几个 React 测试fetch-mock,每个测试都执行一些 get 操作,所以我最初所做的是:

beforeAll(){
    fetchMock.get(`*`, JSON.stringify(CORRECTRESPONSE));
}
Run Code Online (Sandbox Code Playgroud)

但是,在某些测试中我需要返回错误的数据作为答案,例如:

test('Wrong get answer', ()=> {
   fetchMock.get('*', JSON.stringify(WRONGRESPONSE), {overwriteRoutes: true});
}));
Run Code Online (Sandbox Code Playgroud)

因此,由于我需要重置以下测试的响应(因此 return CORRECTRESPONSE,我想出了这个解决方案:

beforeEach(){
    fetchMock.get(`*`, JSON.stringify(CORRECTRESPONSE));
}

afterEach(fetchMock.restore);
Run Code Online (Sandbox Code Playgroud)

有更好的办法吗?

小智 3

根据文档,这应该可以做到

beforeEach(() => {
  fetch.resetMocks()
})
Run Code Online (Sandbox Code Playgroud)