1

我用 fetchMock (v.5.13.1) 模拟了我的 API-Respones。我已经使用它很长时间了,我还没有看到这种行为。

我嘲笑了两个非常相似的 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 Uncaught TypeError:无效状态 RELEASED 传递给响应对象。要使用具有状态作为属性的 JSON 对象进行响应,请将对象分配给 body,例如 {"body": {"status: "registered"}}

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

4

1 回答 1

1

对于 fetchMock 的第二个请求,它假定status是作为整数提供的标准代码之一。根据文档,提供给的配置fetchMock需要以下参数

如果一个对象仅包含下面列出的属性中的属性,则它用于配置响应以返回

正文:字符串 | 目的

设置响应正文。有关传递对象时的行为,请参阅下面文档的非配置对象部分

服务器响应正常 { token: 'abcdef' }

状态:整数

设置响应状态

200、404、503

标头:对象

设置响应标头

{'内容类型':'文本/html'}

重定向网址:字符串

响应应声称源自的 url(模仿跟随的指示)。还将在响应上设置 redirected: true

抛出:错误

强制 fetch 返回一个被 throws 值拒绝的 Promise

new TypeError('获取失败')

但是,对于自定义状态属性,您可以使用正文进行响应

fetchMock.get('glob:*/shipping/myId1234', {
    body: {"id": "1234", "status": "RELEASED", "foo": "bar"}
})
于 2019-02-22T10:51:29.997 回答