我是这样设置服务器的
const server = setupServer(
http.post('http://172.17.0.1:3001/auth/confirm', async ({ request }) => {
const newPost = await request.json() as Request;
return HttpResponse.json({ body: newPost }, { status: 400 });
})
);
字符串
我在准备我的测试
beforeAll(() => server.listen());
render(<ConfirmationPage />);
型
该组件使请求处于加载状态,
axios.post('http://172.17.0.1:3001/auth/confirm', {
headers: { 'Content-Type': 'application/json' }, responseType: 'json'
}).then(response => {
console.log('here success', response);
}).catch(error => {
console.log('here error', error);
});
型
但是返回的响应是一个空的数据字符串
{ data: '', status: 400 ...}
型
我能想到的唯一其他信息是jest中的testEnvironment是jest-environment-jsdom
,setupFiles如下
const { TextDecoder, TextEncoder } = require('util');
const { Response } = require('whatwg-fetch');
global.Response = Response;
global.TextEncoder = TextEncoder;
global.TextDecoder = TextDecoder;
型
1条答案
按热度按时间4c8rllxm1#
当我把msw包从0.39更新到最新版本时,我也遇到了类似的问题。我可以改变响应的状态,但主体总是一个空字符串。查看他们的文档中常见的问题,它显示安装'undici'库来定义全局属性。我使用的是最新的6.2.0版本的'undici',而我应该使用更早的主要版本,所以切换到5.2.0反而为我解决了这个问题