Jest.js MSW服务器POST请求不返回正文

tyu7yeag  于 11个月前  发布在  Jest
关注(0)|答案(1)|浏览(125)

我是这样设置服务器的

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;

4c8rllxm

4c8rllxm1#

当我把msw包从0.39更新到最新版本时,我也遇到了类似的问题。我可以改变响应的状态,但主体总是一个空字符串。查看他们的文档中常见的问题,它显示安装'undici'库来定义全局属性。我使用的是最新的6.2.0版本的'undici',而我应该使用更早的主要版本,所以切换到5.2.0反而为我解决了这个问题

相关问题