EmuLabZip logo EmuLabZip

模拟响应与断点

最后更新 · 在 GitHub 上编辑此页

规则让你无需改动服务器,就能改变应用收到的响应:自己应答请求、让它变慢、让它失败,或者暂停它并手动编辑。规则位于代理中,因此对 Network 工具所连接的每台设备都有效。

规则#

一条规则有一个匹配器(匹配哪些请求)和一个动作(做什么)。第一条匹配的已启用规则生效。

匹配器字段匹配
methods这些方法中的任意一个。为空表示任意方法。
host一个模式:api.example.com、*.example.com。* 表示任意长度的字符,? 表示任意一个字符。
path针对不含查询的路径的模式:/v1/users/*。
urlContains完整地址(主机、路径和查询)必须包含的文本。

每个已设置的字段都必须匹配。

动作会发生什么
Answer(mock)代理在可选的延迟之后,用你指定的状态、标头和正文进行应答。服务器完全不会被请求。
Delay请求先等待,然后继续。用它来试验慢速网络。
Block应用收到网关错误,就像网络失败了一样。没有任何内容会到达服务器。
Hold(breakpoint)请求、响应或两者都会暂停,等待你处理。

另有四个动作,可以把请求发送到文件或另一台服务器、根据 OpenAPI 文件检查响应,或运行 WebAssembly 脚本;规则还可以让它下面的规则也生效:请参阅网络规则和规则脚本。

被规则处理过的流程会在列表和详情中显示 MOCK 或 RULE 徽标。

规则针对的是你选定的某一件事。若要用录制内容应答所有请求,请参阅回放录制。规则仍然优先于录制内容。

在应用中#

打开 Network,然后打开 Rules。选择一个预设(JSON 应答、500、慢速网络、阻止、断点),或者从一个请求开始:选中它并点击 Mock,得到一条与服务器应答方式相同、可直接编辑的规则。规则对下一个请求生效,并保存在 EmuLabZip 数据文件夹的 net-rules.json 中。

断点#

被暂停的请求或响应会出现在 Network 视图底部的抽屉中。你可以编辑标头(每行一个 name: value)、正文(文本时)以及响应的状态。Continue 会带着你的修改把它发出去,Abort 会让它失败,Continue all 会放行所有内容。响应以解码后的形式显示,并以未压缩的形式继续发送。如果没有人处理,被暂停的消息会在 2 分钟后原样继续,因此应用不会永远挂起。

在命令行中#

emulabzip net --rules rules.json
[
  {
    "name": "stub the profile",
    "matcher": { "host": "api.example.com", "path": "/v1/profile" },
    "action": { "type": "mock", "status": 200,
                "headers": [["content-type", "application/json"]],
                "body": "{\"name\": \"Ada\"}" }
  },
  { "name": "slow uploads", "matcher": { "methods": ["POST"] }, "action": { "type": "delay", "ms": 3000 } },
  { "name": "no analytics", "matcher": { "host": "*.analytics.example.com" }, "action": { "type": "block" } }
]

模拟响应可以带有二进制正文:设置 "base64": true,并以 base64 提供正文。断点需要有人来继续它们,因此命令行会跳过这类规则,并给出提示。

限制#

  • 模拟响应的正文最大 5 MB,延迟最长 60 秒。
  • 规则看到的是解密后的请求,因此 HTTPS 需要安装证书。被直接放行的主机(固定证书的应用)无法修改。
  • WebSocket 升级与任何请求一样被匹配,但只有握手可以被模拟或阻止。