Search code examples
javascripttestingjestjsservice-workerintercept

MSW (Mock Service Worker) change port from 8080


The MSW documentation for request-url says:

// Only "POST https://api.backend.dev/users" requests match this handler
rest.post('https://api.backend.dev/users', responseResolver)
// Given your application runs on "http://localhost:8080",
// this request handler URL gets resolved to "http://localhost:8080/invoices"
rest.get('/invoices', invocesResolver)

Been searching a lot but can't find some docs on how to change the port. So it could be something like http://localhost:3001


Solution

  • The "localhost:8080" is emphasized above because a relative URL against a default localhost will resolve to localhost:8080/url. You don't necessarily have to customize that.

    Relative URL

    Any relative URL will be relative against the current application's location. So if your application is running on http://localhost:3000 and you defined a relative /user handler, you get http://localhost:3000/user automatically.

    // If my app runs on :3000, the handler above intercepts
    // a GET http://localhost:3000/user. I don't have to specify
    // hostnames/ports for relative URLs against the application address.
    rest.get('/user', resolver)
    

    Absolute URL

    If you need (for some reason) to define a handler for an external localhost service, the one that is not your application, you include its absolute URL:

    // My app runs on :3000 but I want to intercept and mock a request
    // to another app that runs on localhost:3001. Here's how I do it:
    rest.get('http://localhost:3001/user', resolver)