付费视频,请购买课程( ¥2,000.00 )后再观看
使用 Foundry 进行合约测试
17次播放
1 天前
视频 AI 总结:
视频主要讲解智能合约测试的重要性及基于 Foundry 框架的测试方法。测试开发时间通常是编写的 2-3 倍,需覆盖所有分支及边界条件。利用 AI 可快速生成更全面的测试用例。核心工具包括 console.log 调试、单元测试、模糊测试、不变量测试和分叉测试,并强调 gas 优化及 gas snapshot 对比。详细介绍了 cheat codes(如 prank、deal、expectRevert、expectEmit)模拟账户、余额、区块、时间戳等场景,以及使用 Tenderly 或 cast 命令进行链上交易重放调试。
关键信息:
- 测试时间占比高,需覆盖正常与异常分支。
- AI 辅助测试可提升全面性,测试用例比代码更重要。
- 本地调试用 console.log(仅本地环境),链上调试可用 Tenderly 或 cast 交易重放。
- 单元测试:以 test 开头,无状态,每次独立。Forge Test 命令支持 match 筛选和 verbose 日志输出。
- Gas 报告:关注平均/中位数 gas,利用 gas snapshot 和 diff 对比优化前后消耗。
- 模糊测试(Fuzz):随机输入验证健壮性,可用 bound 限定范围,结合 expect revert 处理异常。
- 不变量测试(Invariant):设定始终成立的约束(如总供应量不变),随机调用合约方法后验证。
- 分叉测试:基于主网/测试网状态创建本地分叉,依赖已部署合约(如 USDT、Uniswap)时使用。可在代码中用 vm.createFork 和 vm.selectFork 控制。
- Cheat codes 常用操作:模拟区块号/时间戳、设置余额(deal)、模拟调用者(prank/startPrank)、断言错误(expectRevert)、断言事件(expectEmit)。