二七王:新增 Node 单元测试,CLAUDE.md 记录测试命令

- test/_shim.js:平台全局垫片(min_ary_include/deduct、min_random/now/ontimeout、
  youle_erqiwang.import mock),忠实复刻 minhttp.js;仅测试用,不进正式代码
- test/_assert.js + run.js:极简断言与总运行器
- test/test_arith.js(扣底/算子常规+爬坡/算奖/甩牌/跟牌分量) test_config.js(位串/局数扣卡)
  test/test_paiju.js(亮牌/结算 get_paiju_account 集成),共 89 项断言全过
- test/README.md:运行方式与双运行时原理
- CLAUDE.md:常用命令补测试入口,说明服务端双运行时规范

(CLAUDE.md 内另含此前一处措辞微调,随本次文档更新一并纳入)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-04 23:51:12 +08:00
co-authored by Claude Opus 4.8
parent 60271175d6
commit 6d663c8a66
8 changed files with 303 additions and 3 deletions
+6 -3
View File
@@ -10,18 +10,21 @@
## 常用命令
没有配置任何构建/lint/测试工具。仓库里唯一的脚本:
没有配置任何构建/lint 工具。仓库里的脚本:
```bash
# 根据 client/assets/spine/*.json 重新生成 client/generated/spine_assets.js 与 spine_data.js
client/scripts/build_spine_data.cmd # 内部调用 build_spine_data.ps1
# 二七王服务端单元测试(纯 node 直跑,无框架)
node server/games/erqiwang/test/run.js # 跑全部;退出码 0 全过、非 0 有失败
```
在 `client/assets/spine/` 增删 Spine 导出文件后运行;不要手改这两个生成文件。
在 `client/assets/spine/` 增删 Spine 导出文件后运行第一条;不要手改这两个生成文件。
查看客户端效果需用 HTTP 方式(而非 `file://`)打开 `client/index.html`,例如 `npx http-server client -p 8080`。
`shared/`(共享算法,待子游戏接入后才有)的改动应按两份文档中「§10 测试纪律」的要求跑 Node 单测验证——目前尚未接入测试框架,意味着需要直接用 `node` 运行相应脚本。
服务端子游戏代码遵循「一套代码,两个运行时」(见 `docs/server/development-guide/01` §1):友乐/浏览器无 `require`、由 `min_loadJsFile` 加载为全局;Node(本地/单元测试)用文件顶部 `if (typeof require!=='undefined')` 守卫 require、底部 `module.exports` 导出。二七王据此已可用 `node` 直接单测(见 `server/games/erqiwang/test/README.md`);`shared/`(共享算法)改动同样按两份文档「§10 测试纪律」跑 Node 单测验证。
## 架构