@testing-library/ реагировать с помощью msw/node; window.fetch не возвращает тело при POST
Я создал простое приложение с помощью create-react-app. Сейчас я пытаюсь написать несколько автоматических тестовых примеров, используя @ testing-library и Mock Service Worker. По неизвестным мне причинам, когда я отправляю запрос с помощью Window.fetch (или просто извлекаю), тело ответа не возвращается.
Я использую следующие зависимости:
"@testing-library/react": "^11.2.5",
"@testing-library/user-event": "^12.7.1",
"msw": "^0.28.0",
"react": "^17.0.1"
У меня есть следующий тест:
import { rest } from 'msw';
import { setupServer } from 'msw/node';
const MOCKED_URL = 'http://mock.example.net:8080/foo'
let server = setupServer(
rest.post(MOCKED_URL, (req, res, ctx) => {
return res(
ctx.status(200),
ctx.json(req.body),
)
}),
)
beforeAll(() => server.listen())
afterEach(() => server.resetHandlers())
afterAll(() => server.close())
test('send POST request with body via superagent', async () => {
let response = await window.fetch(MOCKED_URL, {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
headers: { 'Content-Type': 'application/json' },
body: { bar: 6, baz: '34' }
});
console.log(response);
expect(response.body).toMatchObject({
bar: 6,
baz: '34',
})
});
Выход из
console.log(response)
является
type: 'default',
status: 200,
ok: true,
statusText: 'OK',
headers: Headers {
map: { 'x-powered-by': 'msw', 'content-type': 'application/json' }
},
url: '',
bodyUsed: false,
_bodyInit: Blob {},
_bodyBlob: Blob {}
}
Может кто-нибудь объяснить, почему не возвращают тело и как заставить этот тест работать?
1 ответ
Вам нужно позвонить
await response.json()
чтобы получить тело ответа.
const body = await response.json();
expect(body).toMatchObject({bar: 6, baz: '34});