MirageJS 错误响应不会导致错误

Jon*_*man 1 miragejs

按照文档,我在里面设置了这个处理程序routes()

this.put(
  '/admin/features/error/environment/test',
  // @ts-ignore
  () => new Response(500, {}, { errors: ['The database went on vacation'] }),
);
Run Code Online (Sandbox Code Playgroud)

Mirage 确实收到了我所设置的内容。这是来自浏览器控制台日志的响应。请注意,尽管500 显示在_bodyInit

{
    "type": "default",
    "status": 200,
    "ok": true,
    "statusText": "",
    "headers": {
        "map": {
            "content-type": "text/plain;charset=UTF-8"
        }
    },
    "url": "",
    "bodyUsed": false,
    "_bodyInit": 500,
    "_bodyText": "[object Number]"
}
Run Code Online (Sandbox Code Playgroud)

请注意,我需要ts-ignore这可能是一条线索。TS 抱怨new Response预计有 0-2 个参数,但得到了 3 个。

msm*_*ens 6

尝试导入 Mirage Response类:

import { Response } from 'miragejs';
Run Code Online (Sandbox Code Playgroud)

否则,Response引用Fetch API Response对象。这解释了调用路由时的类型检查错误和意外行为。

添加导入后,您可以删除@ts-ignore,并且对路由的请求应该会失败,状态代码为 500。