Skip to content

Instantly share code, notes, and snippets.

@uriannrima
Created May 20, 2021 10:36
Show Gist options
  • Save uriannrima/d52281288435a8d1fbf4d7e8bc8fd3ac to your computer and use it in GitHub Desktop.
Save uriannrima/d52281288435a8d1fbf4d7e8bc8fd3ac to your computer and use it in GitHub Desktop.
Jest - Expectation using MSW
it('should post a body correctly', async () => {
expect.extend({
toHaveBeenCalledWithBody(mockFn, expectedBody) {
const {
mock: {
calls: [call],
},
} = mockFn;
let [{ body }] = call;
body = JSON.stringify(body);
expectedBody = JSON.stringify(expectedBody);
const pass = body === expectedBody;
// console.log({ mockFn, call, body, expectedBody, pass });
const messageCreator = (passed) => () =>
`expected ${body} ${passed ? 'not' : ''} to equal ${expectedBody}`;
return { message: messageCreator(pass), pass };
},
});
const handlerMock = jest.fn((_, res, ctx) =>
res(ctx.status(200), ctx.json({ result: 'OK' }))
);
server.use(rest.post('/any/url', handlerMock));
const body = { name: 'Ricardo' };
const response = await axios.post('/any/url', body);
expect(handlerMock).toHaveBeenCalledWithBody(body);
expect(handlerMock.mock.calls[0][0]).toMatchObject({
body: expect.objectContaining({
name: expect.any(String),
}),
});
expect(response).toMatchObject({
status: 200,
data: { result: 'OK' },
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment