Code Monkey home page Code Monkey logo

Comments (7)

kettanaito avatar kettanaito commented on June 20, 2024

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.

juliusmarminge avatar juliusmarminge commented on June 20, 2024

@kettanaito so the problem im having is that msw doesn't intercept these fetches for me...

see pingdotgg/uploadthing#679

from msw.

kettanaito avatar kettanaito commented on June 20, 2024

What is fetchMock() (here)?

I suggest to do the following:

  1. Confirm if MSW works without the custom fetch function on your end.
  2. Check what fetch() equals to in your custom fetch function.
  3. Make sure you are not mocking globalThis.fetch for any reasons. This is hard requirement for MSW to work: requests must happen.

from msw.

juliusmarminge avatar juliusmarminge commented on June 20, 2024

it's just a vi.fn()

from msw.

kettanaito avatar kettanaito commented on June 20, 2024

@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.

juliusmarminge avatar juliusmarminge commented on June 20, 2024

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.

kettanaito avatar kettanaito commented on June 20, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.