Comments (7)
Hi, @juliusmarminge.
If I may, what does your custom fetch
use to make requests then?
MSW will always rely on the standards and that's unlikely to change. Your custom fetch is likely wrapping the native fetch or tapping into things like http
in Node.js. In either case, MSW will work because for the library your custom fetch is the same as you using React Query or Axios—abstractions over the actual things MSW intercepts and gives you control over.
I don't believe we need server.fetch
in any shape or form but I'm always happy to learn more about your use case.
from msw.
@kettanaito so the problem im having is that msw doesn't intercept these fetches for me...
from msw.
What is fetchMock()
(here)?
I suggest to do the following:
- Confirm if MSW works without the custom
fetch
function on your end. - Check what
fetch()
equals to in your customfetch
function. - Make sure you are not mocking
globalThis.fetch
for any reasons. This is hard requirement for MSW to work: requests must happen.
from msw.
it's just a vi.fn()
from msw.
@juliusmarminge, that's not going to work. You are throwing the fetch
away by replacing it with vi.fn()
. Because of that, your code will stop making actual requests. Everything fetch
does, such as the input validation and no-op requests/responses, you also throw away. I strongly advise you against this because it harms the quality of your test.
Instead, if you wish to spy on fetch, just spy on it without replacing it.
vi.spyOn(globalThis, 'fetch')
This will leave the implementation of fetch intact, execute the actual requests in a test, which will trigger MSW, giving you control over how to resolve those requests.
You can also spy on the request handlers directly if you absolutely have to.
from msw.
I'm not overriding the global fetch with a mock.
I'm just calling it as part of the user-provided fetch:
{
fetch: (url, init) => {
fetchMock(url, init); // allows easy assertions of what fetch has been called with, although a spy could work just as well i guess
return fetch(url, init);
}
}
from msw.
Oh, got it. Then MSW will trigger. As long as your test makes requests, MSW request handlers will always trigger. If it ever doesn't, please follow the Debugging runbook, it can point out some common issues.
If nothing helps, please submit a reproduction repository and I will take a look. Thanks!
from msw.
Related Issues (20)
- Mock a request that contains both query and path parameters
- TypeError: confirm is not a function HOT 7
- Failing to intercept an Axios request: Node 20.11 + Vitest 1.3.1 + MSW 2.2.1
- v2.2.2 does not intercept request in browser mode (CORS error) but v1.3.1 does HOT 3
- Infering the `boundary` callback arguments HOT 10
- support selecting interceptors HOT 1
- Set-Cookie responses containing commas are not handled correctly HOT 1
- HttpResponse.json() throwing TypeError: Right-hand side of 'instanceof' is not an object. HOT 1
- Request with FormData body makes Jest hang forever HOT 6
- TypeError: Right-hand side of 'instanceof' is not an object HOT 4
- Cannot read properties of undefined (reading 'url') HOT 5
- Mocked data getting empty string HOT 8
- "InvalidStateError: The object is in invalid state" when mocking rest api
- Unable to use msw/node for testing solid-js due to `resolve.conditions` set to `browser` HOT 5
- drop CommonJS support HOT 2
- quiet: true should supress RESPONSE LISTENER logs HOT 4
- Narrowing the response body type in `HttpResponse.json` HOT 16
- Error: No known conditions for "./browser" specifier in "msw" package HOT 5
- "Cannot read properties of undefined (reading 'get')" when using generators/async generators as resolvers HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from msw.