前端的功能开发经常被服务器档在门外:后端的接口没写完,前端只能干等或造假数据。协议 Mock 在本地扮演服务器:前端发什么、Mock 按协议回什么,联调的等待变成并行。
---协议 Mock:按注册表应答
local MockSrv = { routes = {} }
---注册协议的模拟应答
function MockSrv.on(msgId, responder)
MockSrv.routes[msgId] = responder
end
---收包的分发:路由命中即回包
function MockSrv.dispatch(msgId, body)
local r = MockSrv.routes[msgId]
if not r then
Ops.log("Mock 未注册协议: " .. msgId)
return nil
end
return r(body)
end
---注册示例:背包查询的模拟
MockSrv.on(MSGID.BAG_QUERY, function(body)
return {
slots = {
{ idx = 1, name = "金创药", count = 99 },
{ idx = 2, name = "裁决之杖", count = 1 },
},
maxSlot = 40,
}
end)
Mock 的骨架是注册表:每个协议号注册一个应答器,前端的请求按协议号路由到应答器,回包的格式与真实服务器一致。注册的应答分静态与动态:静态的固定数据适合界面布局的联调,动态的函数应答适合交互逻辑的联调(请求带什么参数回什么结果)。协议的定义同源是 Mock 的灵魂:Mock 的路由表由协议文档生成,协议改了 Mock 同步改,联调的两端永远对着同一份协议。
---场景编排:异常流程的模拟
function MockSrv.scenario(name)
-- 场景一:背包已满的错误分支
if name == "bag_full" then
MockSrv.on(MSGID.BAG_QUERY, function()
return { err = 2001, msg = "背包已满" }
end)
end
-- 场景二:延迟 3 秒的慢响应
if name == "slow_net" then
MockSrv.delay = 3000
end
-- 场景三:随机掉线
if name == "disconnect" then
MockSrv.dropRate = 0.2
end
end
场景的编排让前端在本地体验服务器的全部状态:错误的分支(背包满、权限不足)、网络的异常(延迟 3 秒、随机掉线)——这些场景在真实联调时最难造,在 Mock 里是一行开关。弱网的模拟让转圈与超时的处理在开发期就写对,上线后的体验问题提前消化。Mock 的验证与真实联调的衔接:前端在 Mock 上跑过的用例清单自动化地在真实联调时重放,两轮的结果对比就是联调的验收。Mock 的覆盖度统计:协议文档里的每条消息是否注册了 Mock,未注册的协议清单驱动补齐的优先级。
Mock 与真实服务器的同构性验证:同一请求的两端回包做结构比对,字段的漂移在联调前暴露;Mock 的使用率统计,团队的联调依赖度是工具价值的读数。
Mock 的回包格式曾经与真实服务器漂移,字段改名后前端在 Mock 上一切正常、真实联调全线报错,同源生成根治。场景的开关曾经全局生效,同事的联调被自己的异常场景干扰,场景的会话隔离。Mock 的延迟模拟曾经阻塞了工具自身,异步的延迟实现让 Mock 始终在线。
Mock 的协议同源生成进构建流水线,协议的变更自动更新 Mock。前端的新人入职第一课是在 Mock 上跑通全部界面,联调的门槛降到零。异常场景的清单随线上事故扩充:真实环境出的体验问题回补为 Mock 的场景。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 战士克法师、法师克道士、道士克战士——三角的克制是传奇职业平衡的骨架。克制框架的要点是相性的数值化、克制…
实战应用:用在哪里 挂机 24 小时的收益与玩 2 小时一样多吗?疲劳值系统回答产出节奏的问题:每日的疲劳额度框定有效收益的…
实战应用:用在哪里 GM 发出去的每一件补偿、踢掉的每一个号都要能查:审计的数据躺在日志里不算难,检索的效率决定追责与复盘的…
实战应用:用在哪里 师徒链的层级遍历、行会职位的树状结构、嵌套菜单的展开——递归的写法优雅但栈深是隐形的雷。递归改写把深层的…
实战应用:用在哪里 找回密码是账号安全的压轴救援通道,也是社工攻击的突破口:骗过客服就能偷走别人的账号。找回的流程设计在「帮…
实战应用:用在哪里 行会基金是行会的公共金库:沙巴克的税收、成员的捐献、活动的奖金全进这一个池子,基金的每一笔进出都要对得上…