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)
- Allow customization of network error HOT 1
- Update 2.x removeAllListeners documentation
- Uncaught SyntaxError: Unexpected string (at msw.js?v=2dd0a77b:2057:51) HOT 2
- Include GraphQL operation name in the unhandled request warning HOT 3
- Trying to pull body in POST mocks breaks mocking HOT 3
- Error: [MSW] Failed to locate the Service Worker registration.
- Issue when no response.url and request is undefined
- msw/node unable to intercept requests from fetch in undici HOT 3
- request.formData() fails with vitest and file HOT 5
- Make bad "Network behavior overrides" more obvious HOT 1
- Optional path parameters do not match correctly HOT 4
- Always results in Network Error when using undici 6.x HOT 1
- Recieving `Network error` after moving to codegen msw handlers, various dependency upgrades and the addition of RTK query.
- Unclear how to throw an actual error HOT 1
- Axios fails to follow redirects from MSW mocked responses HOT 2
- FormData with file fails in with-jest HOT 2
- Native fetch is intercepted, but openapi-fetch call makes actual request HOT 3
- Cookie with path other than root not sent to handlers
- intercepted request won't abort on node 20 w/ [email protected]
- List "graphql" as a peer dependency HOT 3
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.