You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于fetch的API客户端测试:Mock Response调用json()报错排查

Mock Response构建问题及修复方案

你的Mock Response构建方式存在问题,导致解析失败的核心原因是:在部分测试环境中,Blob对象的模拟不完整,实际传递给Response的内容并非JSON字符串,而是Blob对象的默认字符串表示[object Blob],这才会触发SyntaxError: Unexpected token o in JSON at position 1错误。

修复方案

方案一:直接传入JSON字符串(推荐)

跳过Blob的创建,直接将JSON字符串作为Response的body,同时指定Content-Type头,这是最简洁且兼容性最好的方式:

const data = {};
const status = 200;
const response = new Response(JSON.stringify(data), {
  status,
  headers: { 'Content-Type': 'application/json' }
});

方案二:确保测试环境正确支持Blob

如果业务场景必须使用Blob,需要确认你的测试环境(如Jest + jsdom)是否完整支持Blob API。例如在Jest中,可能需要升级jsdom版本,或者手动补充Blob的实现,确保Blob的内容能被Response正确读取。不过这种方式复杂度更高,不如方案一高效。

额外排查点

确认data变量的类型:如果data本身已经是JSON字符串而非对象,JSON.stringify(data)会将其二次转义,同样会导致解析错误。此时直接传入data即可,无需再调用JSON.stringify。

内容的提问来源于stack exchange,提问作者fudo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:42:37