contiamo / restful-react

A consistent, declarative way of interacting with RESTful backends, featuring code-generation from Swagger and OpenAPI specs 🔥
MIT License
1.87k stars 109 forks source link

refetch does not respect the mock argument for lazy hooks #383

Open abhinavrastogi opened 2 years ago

abhinavrastogi commented 2 years ago

Describe the bug When useGet hook is intialised with options lazy: true and mock: { ... }, calling refetch returns the mock response, but still makes the network call. This works in the browser, but causes issues in test environments where making API calls is not allowed.

Eg. Jest running in JSDom env fails with the error ReferenceError: Request is not defined and the following stack trace:

ReferenceError: Request is not defined
            at _temp2 (/Users/abhinavrastogi/project/node_modules/restful-react/src/useGet.tsx:172:23)
            at requestOptions (/Users/abhinavrastogi/project/node_modules/restful-react/src/useGet.tsx:167:19)
            at fetchData (/Users/abhinavrastogi/project/node_modules/restful-react/src/useGet.tsx:163:84)
            at /Users/abhinavrastogi/project/node_modules/restful-react/src/useGet.tsx:285:7

To Reproduce Steps to reproduce the behavior:

  1. Go to https://codesandbox.io/s/frosty-turing-pppqs?file=/src/App.js
  2. Open browser dev-tools
  3. Click on 'Refetch' button
  4. See that network panel shows the network call being made, but the response displayed is from the mock object

Expected behavior Calling refetch when mock is present, should not trigger the actual network call.

Screenshots N/A

Desktop (please complete the following information):

Additional context N/A