用途:为 Gear/Vara Sails 项目提供标准 gtest 测试循环,在进入实时节点冒烟测试前,用生成客户端和明确的 gtest 证据完成功能验证、调试与回归覆盖。
主要能力:指导确认实现目标可验证;优先使用生成客户端或 GtestEnv,而非手工构造 payload;在必须下沉到生成客户端以下时,先判断 payload 或回复字节属于 Sails 路由、纯 SCALE 还是元数据驱动的状态输出,再套用原始模型:send_bytes* 返回 MessageId,run_next_block 返回 BlockRunResult,回复证据位于区块结果中;选择合适的 BlockRunMode 并显式推进区块;当延迟工作或超时行为跨多个区块时使用 run_to_block;在测试结果中断言行为、回复、事件或账务,而非仅编译通过;记录失败模式、修复方式和通过的命令输出。
使用方式:结果写入 docs/plans/YYYY-MM-DD-<topic>-gtest.md。参考资源包括 gtest 报告模板、gtest 速查表、gtest 模式、Sails 速查表、Sails gtest 与本地验证指南、gas 预留与等待列表、SCALE 二进制解码指南。测试套件全绿后,才路由到 sails-local-smoke。
常见陷阱:Rust 2024 监听器生命周期下,链式调用 program.service().listener().listen().await 会因临时值在借用期间被丢弃而失败,需将中间值绑定到更长生命周期的变量;gtest 中程序账户存在存在性存款,绝对余额断言会失败,应先捕获部署后初始余额再断言相对增量;发送消息后忘记调用 run_next_block 会导致回复永不被处理,期望回复时至少推进一个区块。
限制与护栏:不得以没有 Sails 适当断言的绿色 cargo test 输出作为证明;gtest 仍为红色时不得启动本地节点冒烟测试;测试依赖 gas 或价值推理时不得跳过;在确认是否存在 Sails 路由帧之前,不得将原始回复或事件字节直接解码为业务 DTO。