如何在TestCafe发送请求前通过onRequest修改请求体负载
TestCafe请求体修改失效问题修复
核心问题
你代码里的Buffer.from()用法错误——直接传入JavaScript对象时,Buffer会把对象转成"[object Object]"字符串,而不是你预期的JSON序列化内容,导致请求体被错误替换,自然看不到效果。
修复后的代码
export class MyRequestHook extends RequestHook { onRequest(event) { try { if (event.requestOptions?.body) { // 解析原请求体,新增字段后转为JSON字符串,再生成Buffer const originalBody = JSON.parse(event.requestOptions.body.toString()); const modifiedBody = { ...originalBody, newOption: true }; event.requestOptions.body = Buffer.from(JSON.stringify(modifiedBody), 'utf8'); console.log('修改后的请求体:', modifiedBody); } } catch (error) { console.error('修改请求体出错:', error); } } onResponse(e) {} } // 钩子初始化与使用 const customHook = new MyRequestHook(/api\/get-some-staff/); fixture.only`TEST FIXTURE` .page(`url-url`) .requestHooks(customHook) .disablePageCaching;
额外验证点
- 检查URL正则
/api\/get-some-staff/是否准确匹配目标请求,避免路径拼写或正则规则错误。 - 确认目标请求的
Content-Type为application/json,保证服务端能正确解析修改后的JSON格式请求体。
内容的提问来源于stack exchange,提问作者Max Sherbakov
相关产品推荐
相关产品推荐

