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

时间:2018-03-01 15:48:11

标签: reactjs unit-testing fetch jest fetch-mock

我使用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);

有没有更好的方法呢?

2 个答案:

答案 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