如何为每个测试重置 fetch-mock?
How to reset fetch-mock for each test?
我有几个使用 Jest 和 fetch-mock
的 React 测试,每个测试都做一些获取操作,所以我最初做的是:
beforeAll(){
fetchMock.get(`*`, JSON.stringify(CORRECTRESPONSE));
}
然而,在一些测试中我需要return错误的数据作为答案,比如:
test('Wrong get answer', ()=> {
fetchMock.get('*', JSON.stringify(WRONGRESPONSE), {overwriteRoutes: true});
}));
因此,由于我需要为以下测试重置响应(因此 return CORRECTRESPONSE
,我想出了这个解决方案:
beforeEach(){
fetchMock.get(`*`, JSON.stringify(CORRECTRESPONSE));
}
afterEach(fetchMock.restore);
有什么更好的办法吗?
根据文档,应该这样做
beforeEach(() => {
fetch.resetMocks()
})
我不明白为什么之前的答案 () 被设置为正确的。 afterEach(fetchMock.restore)
测试后清理是一个很好的方法。
这也是 fetch-mock 文档中描述的内容:http://www.wheresrhys.co.uk/fetch-mock/#api-lifecyclerestore_reset
我有几个使用 Jest 和 fetch-mock
的 React 测试,每个测试都做一些获取操作,所以我最初做的是:
beforeAll(){
fetchMock.get(`*`, JSON.stringify(CORRECTRESPONSE));
}
然而,在一些测试中我需要return错误的数据作为答案,比如:
test('Wrong get answer', ()=> {
fetchMock.get('*', JSON.stringify(WRONGRESPONSE), {overwriteRoutes: true});
}));
因此,由于我需要为以下测试重置响应(因此 return CORRECTRESPONSE
,我想出了这个解决方案:
beforeEach(){
fetchMock.get(`*`, JSON.stringify(CORRECTRESPONSE));
}
afterEach(fetchMock.restore);
有什么更好的办法吗?
根据文档,应该这样做
beforeEach(() => {
fetch.resetMocks()
})
我不明白为什么之前的答案 (afterEach(fetchMock.restore)
测试后清理是一个很好的方法。
这也是 fetch-mock 文档中描述的内容:http://www.wheresrhys.co.uk/fetch-mock/#api-lifecyclerestore_reset