fetchMock:未捕获的typeError

时间:2019-02-22 10:35:31

标签: reactjs fetch-mock

我已经使用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对象进行响应   属性将对象分配给主体,例如{“正文”:{“状态:   “已注册”}}

我有一个假设,我无法模拟某些包含状态的响应,因为这在某种意义上是为状态码保留的属性,但是我不太确定,也无法在线找到任何类似的错误。

1 个答案:

答案 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"}
})