3

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

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

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

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

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

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

afterEach(fetchMock.restore);

有没有更好的方法来做到这一点?

4

2 回答 2

3

我不明白为什么之前的答案(https://stackoverflow.com/a/49778196/689944)被设置为正确的。测试后清理afterEach(fetchMock.restore)是一个非常好的方法。

这也是 fetch-mock 文档中描述的内容:http: //www.wheresrhys.co.uk/fetch-mock/#api-lifecyclerestore_reset

于 2019-07-08T13:22:26.553 回答
2

根据文档,这应该这样做

beforeEach(() => {
  fetch.resetMocks()
})
于 2018-04-11T14:48:11.920 回答