我使用Jest和fetch-mock
进行了几次React测试,其中每个都做了一些get操作,所以我最初做的是:
beforeAll(){
fetchMock.get(`*`, JSON.stringify(CORRECTRESPONSE));
}
但是,在某些测试中,我需要将错误的数据作为答案返回,例如:
test('Wrong get answer', ()=> {
fetchMock.get('*', JSON.stringify(WRONGRESPONSE), {overwriteRoutes: true});
}));
因此,由于我需要重置以下测试的响应(因此返回CORRECTRESPONSE
),我想出了这个解决方案:
beforeEach(){
fetchMock.get(`*`, JSON.stringify(CORRECTRESPONSE));
}
afterEach(fetchMock.restore);
有没有更好的方法呢?
答案 0 :(得分:1)
根据文档,这应该这样做
beforeEach(() => {
fetch.resetMocks()
})
答案 1 :(得分:0)
我不明白为什么以前的答案(https://stackoverflow.com/a/49778196/689944)被设置为正确。经过afterEach(fetchMock.restore)
测试后清理是一种很好的方法。
这也是fetch-mock文档中描述的内容:http://www.wheresrhys.co.uk/fetch-mock/#api-lifecyclerestore_reset