Comments (4)
Not sure If I have the same issue but I'm encounter issue with nest.js module "@nestjs/axios".
This is some info about the console error.
● Notification controller › Notification controller in test mode › should call POST /api/notifications IN TEST MODE with type of LIVE_SESSION successfully
TypeError: Cannot read properties of null (reading 'readable')
● Notification controller › Notification controller in test mode › should call POST /api/notifications IN TEST MODE with type of LIVE_SESSION successfully
TypeError: body.getReader is not a function
at _NodeClientRequest.respondWith (../../node_modules/@mswjs/interceptors/src/interceptors/ClientRequest/NodeClientRequest.ts:555:31)
at ../../node_modules/@mswjs/interceptors/src/interceptors/ClientRequest/NodeClientRequest.ts:317:14
"msw": "^2.2.0",
BTW, it works fine if I return error
return new HttpResponse(null, {status: 400});
from msw.
I have a same issue too...
And it works with fetch instead of axios.
I checked the headers, but in the both case, the headers were same like
{"content-length": "1", "content-type": "application/json"}
I think it's probably a problem with axios library.
from msw.
I'm experiencing a similar issue, where it is not recognizing the axios post method, returning this error, TypeError: Right-hand side of 'instanceof' is not an object
Example post setup it is erroring on: axios.post("/api/reference-url", {id: p.id, searchStr: "some word"})
Version of MSW:
"msw": "^2.2.2",
from msw.
I also ran into axios-related issues with msw. My workaround is to mock axios to use fetch for the requests within my vitest suite. This should also be applicable to Jest (using jest.mock
instead of vi.mock
). Maybe that helps anyone in the future.
Solution that works for me in a test setup file:
beforeAll(() => {
// axios needs to be mocked to use fetch in order to work with msw
vi.mock("axios", () => {
const isAxiosError = (error: any) => error.isAxiosError === true;
const handleAxiosResponse = async (response: Response) => {
if (!response.ok) {
// eslint-disable-next-line @typescript-eslint/no-throw-literal
throw {
isAxiosError: true,
message: response.statusText,
response: {
status: response.status,
statusText: response.statusText,
data: null,
headers: {},
config: {},
},
};
}
const data = await response.json();
return { data };
};
const handleError = (error: any) => {
throw isAxiosError(error)
? error
: {
isAxiosError: true,
message: error.message,
};
};
const cleanUpParams = (params?: Record<string, string | undefined>) => {
return Object.fromEntries(
Object.entries(params ?? {}).filter(
(entry): entry is [string, string] => entry[1] !== undefined,
),
);
};
const getMethodHandler =
(method: string) => async (url: string, config?: any) => {
const queryString = new URLSearchParams(
cleanUpParams(config?.params),
).toString();
const modifiedUrl = `${url}?${queryString}`;
return await fetch(modifiedUrl, { ...config, method })
.then(handleAxiosResponse)
.catch(handleError);
};
const getMethodHandlerWithBody =
(method: string) => async (url: string, data?: any, config?: any) => {
const queryString = new URLSearchParams(
cleanUpParams(config?.params),
).toString();
const modifiedUrl = `${url}?${queryString}`;
const fetchConfig = {
...config,
method,
body: data ? JSON.stringify(data) : undefined,
};
return await fetch(modifiedUrl, fetchConfig)
.then(handleAxiosResponse)
.catch(handleError);
};
return {
default: {
delete: getMethodHandler("DELETE"),
get: getMethodHandler("GET"),
head: getMethodHandler("HEAD"),
patch: getMethodHandlerWithBody("PATCH"),
post: getMethodHandlerWithBody("POST"),
put: getMethodHandlerWithBody("PUT"),
},
isAxiosError,
};
});
});
from msw.
Related Issues (20)
- Add "http" and "graphql" exports HOT 1
- React Native: server.use does not add request handlers HOT 3
- JSON response with special chars truncated since 2.2.0 HOT 3
- Cannot load the application if the browser doesn't have slash at the end of the URL
- MSW does not intercept requests when the node http(s) library is imported using * as HOT 4
- Mocked stream response with multiple enqueues hangs process HOT 6
- Browser: Cannot read properties of undefined (reading 'url') HOT 4
- Wrong url for mockServiceWorker.js when base config set in Vite 5.x config HOT 2
- Add delay before each request HOT 3
- 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 custom fetch option HOT 7
- 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
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.