我已经使用fetchMock(v.5.13.1)模拟了我的API响应。我已经使用它很长时间了,但是我还没有看到这种行为。
我嘲笑了两个非常相似的GET响应。
fetchMock.get('glob:*/shippings/',"results":[
{"id": "1234", "status": "RELEASED", "foo": "bar"},
{"id": "5678", "status": "CREATED", "foo": "bar"},)
fetchMock.get('glob:*/shipping/myId1234',
{"id": "1234", "status": "RELEASED", "foo": "bar"})
现在,第一个正常工作,但是第二个get返回此错误消息:
fetch-mock.js:187未捕获的TypeError:无效状态已通过释放 在响应对象上。用状态为的JSON对象进行响应 属性将对象分配给主体,例如{“正文”:{“状态: “已注册”}}
我有一个假设,我无法模拟某些包含状态的响应,因为这在某种意义上是为状态码保留的属性,但是我不太确定,也无法在线找到任何类似的错误。
答案 0 :(得分:1)
对于第二个fetchMock请求,它假定status
是作为整数提供的标准代码之一。根据文档,提供给fetchMock
的配置期望以下参数
如果对象仅包含其下面列出的属性中的属性 用于配置要返回的响应
body:字符串|对象
设置响应正文。请参阅文档的“非配置对象”部分 下面是传递对象时的行为
服务器响应正常{令牌:'abcdef'}
状态:整数
设置响应状态
200、404、503
标题:对象
设置响应头
{'Content-Type':'text / html'}
redirectUrl:字符串
响应应声称源自的网址( 模仿跟随指示)。还将设置重定向:true 响应
抛出:错误
强制获取返回以throws值拒绝的Promise
新的TypeError(“无法提取”)
但是对于自定义状态属性,您可以使用正文进行响应
fetchMock.get('glob:*/shipping/myId1234', {
body: {"id": "1234", "status": "RELEASED", "foo": "bar"}
})