SuperAPI AI 工具集

roblox-testing

测试与质量

查看项目

更新于 10-15 23:41

技能介绍

用途:在 Roblox Luau 项目中编写单元与集成测试、mock Roblox 服务、用 Lune 配置 CI/CD,以及通过依赖注入重构代码以提升可测试性。语法、类型、架构与安全校验分别交给 roblox-luau-core、roblox-luau-types、roblox-luau-patterns、roblox-security。

主要能力:TestEZ 行为驱动框架,测试文件命名为 *.spec.luau 并与源码同目录,使用 describe、it、beforeEach/afterEach,断言如 expect(x).to.equal(y)、.to.be.near(n, ε)、.to.throw()。安装用 wally.toml 的 [dev-dependencies] 添加 TestEZ = "roblox/testez@0.4.1"。依赖注入避免直接调用 game:GetService(),改为将服务作为参数注入,或提供 Manager.init(dataStoreService) 之类的模块初始化模式。Mock 方面可自行编写内存版 DataStore(GetAsync/SetAsync/GetDataStore)、MockRemoteEvent(OnServerEvent 与 FireServer)、MockSignal(Connect/Fire 与 Connected 标志)。CI/CD 用 aftman.toml 声明 lune = "lune-org/lune@0.8.0",流水线依次执行 selene src/、stylua --check src/、luau-lsp analyze、lune run tests/run.luau;tests/run.luau 中通过 TestEZ.TestBootstrap:run 运行并以 failureCount 决定 os.exit(1)。

测试优先级:DataStore 存取往返(防数据丢失)、Monetization ProcessReceipt 幂等性、核心数值(伤害、增益、经济)、服务器校验(远程漏洞)。

限制与注意:用 beforeEach 重置状态,逻辑中不要用 game:GetService();测试须与顺序无关;CI 需要 mock;提交 wally.lock。更多细节可加载 references/full.md。