mirror of
https://github.com/hanzoai/msw.git
synced 2026-09-24 17:00:34 +00:00
55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
/**
|
|
* @vitest-environment node
|
|
*/
|
|
import { HttpResponse, http } from 'msw'
|
|
import { setupServer } from 'msw/node'
|
|
|
|
const log = vi.fn()
|
|
|
|
const server = setupServer(
|
|
http.get('https://test.mswjs.io/*', () => log('[get] first')),
|
|
http.get('https://test.mswjs.io/us*', () => log('[get] second')),
|
|
http.get('https://test.mswjs.io/user', () => {
|
|
return HttpResponse.json({ firstName: 'John' })
|
|
}),
|
|
http.get('https://test.mswjs.io/user', () => log('[get] third')),
|
|
|
|
http.post('https://test.mswjs.io/blog/*', () => log('[post] first')),
|
|
http.post('https://test.mswjs.io/blog/article', () => log('[post] second')),
|
|
)
|
|
|
|
beforeAll(() => {
|
|
server.listen()
|
|
})
|
|
|
|
afterEach(() => {
|
|
vi.resetAllMocks()
|
|
})
|
|
|
|
afterAll(() => {
|
|
server.close()
|
|
})
|
|
|
|
test('falls through all relevant request handlers until response is returned', async () => {
|
|
const res = await fetch('https://test.mswjs.io/user')
|
|
const body = await res.json()
|
|
|
|
expect(body).toEqual({
|
|
firstName: 'John',
|
|
})
|
|
expect(log).toHaveBeenNthCalledWith(1, '[get] first')
|
|
expect(log).toHaveBeenNthCalledWith(2, '[get] second')
|
|
expect(log).not.toBeCalledWith('[get] third')
|
|
})
|
|
|
|
test('falls through all relevant handlers even if none return response', async () => {
|
|
const res = await fetch('https://test.mswjs.io/blog/article', {
|
|
method: 'POST',
|
|
})
|
|
const { status } = res
|
|
|
|
expect(status).toBe(404)
|
|
expect(log).toHaveBeenNthCalledWith(1, '[post] first')
|
|
expect(log).toHaveBeenNthCalledWith(2, '[post] second')
|
|
})
|