Foundry测试官方文档导读:高效抓住 forge book 的核心章节
Foundry 的官方文档(forge book)非常完整,但章节繁多,新手容易迷路。本文围绕 Foundry测试官方文档做一次导读,告诉你哪些章节必读、哪些可以先跳过、看的时候应该带什么问题。系统起步可以先看 Foundry测试入门指南。
一、文档结构概览
forge book 大体分为:
- 安装与起步
- 命令参考(forge、cast、anvil、chisel)
- 测试编写(断言、cheatcodes、fuzz、invariant)
- 部署与脚本
- 配置文件 foundry.toml
- 常见 troubleshooting
前两部分对应入门,中间四部分是日常开发主战场,最后是排错手册。
二、安装与起步章节
这一章最大的价值是 foundryup 的使用方式:
- foundryup 不只是安装器,也是版本切换工具
foundryup --branch nightly可以切到 nightly 测试新功能forge init与forge install是日常项目管理命令
中文版的对应内容可见 Foundry测试中文文档,对国内开发者更友好。
三、cheatcodes 完整参考
cheatcodes 章节是日常查得最频繁的部分:
- 时间与区块控制:warp、roll、prevrandao
- 账户与权限:prank、startPrank、stopPrank、impersonateAccount
- 状态注入:deal、store、load
- 期望与断言:expectRevert、expectEmit、expectCall
- 模拟:mockCall、mockCallRevert
建议把这一章打印或截图存到工具盒,写测试时随时翻看。
四、fuzz 与 invariant
fuzz 章节介绍:
- 参数声明的自动 fuzz
- bound 与 assume 的用法
- 失败用例缓存机制
- 配置中的 runs、max-test-rejects 等参数
invariant 章节深入:
- 不变量测试的设计思想
- handler 与 targetContract 的写法
- 在 Foundry测试最佳实践 中被反复推荐的 invariant 模式
两章一起读,能建立对 Foundry 测试能力天花板的真实认知。
五、分叉测试章节
分叉测试是文档中的亮点:
- createFork 与 selectFork 的区别
- 分叉与本地状态的切换
- 多 fork 同时运行
- 在测试中调用真实主网/币安智能链合约
这部分内容对应 Foundry测试漏洞案例 复盘中的核心工具。
六、部署脚本章节
Foundry 的部署脚本与 Hardhat 思路不同:
- 用 Solidity 编写部署逻辑
- 通过
forge script命令执行 --broadcast才会真正上链- 部署记录自动写入
broadcast/目录
这种纯 Solidity 部署对纯 Solidity 团队非常友好,省去了维护 JS 工具链的成本。
七、foundry.toml 配置章节
配置章节列出了所有可调字段:
- profile 切换不同环境(默认、CI、main)
- fuzz/invariant runs 调优
- 优化器参数
- RPC 端点配置
建议先把 profile 用起来,把 CI 与本地的差异通过 profile 隔离。这种模式与 Foundry测试官方文档 推荐方式一致。
八、阅读顺序建议
推荐顺序:起步 → 命令参考速览 → cheatcodes 精读 → fuzz/invariant 精读 → 分叉测试精读 → 配置参考 → troubleshooting 浏览。每一章读完都跑一次相关示例代码,理论与实践结合,吸收速度最快。官方文档不是看一遍就会的工具,而是查阅一辈子的工具盒,把它放在浏览器收藏夹的第一位是值得的。