该技能为 Foundry 项目提供测试与脚本编写的规则和模式,示例需在实际代码库中查找。它捆绑了测试基础设施、cheatcode、不变量模式、形式化验证、部署脚本、部署检查清单、gas 基准测试和 Sablier 约定等参考文档,并规定按需查阅。
测试类型按目录和命名区分:集成测试 tests/integration/concrete/(.t.sol,基于 BTT)、模糊测试 tests/integration/fuzz/、分叉测试 tests/fork/、不变量测试 tests/invariant/(Invariant.t.sol)、脚本 scripts/solidity/(*.s.sol)。集成测试遵循 test_RevertWhen_{Condition}、test_RevertGiven_{State}、test_When_{Condition} 命名;事件期望在动作前,状态断言在动作后,断言使用具名参数。Mock 统一放 tests/mocks/,每个场景一个,命名如 *Good、*Reverting、*InvalidSelector、*Reentrant。
模糊测试命名 testFuzz_{FunctionName}_{Scenario},先 bound 再 assume,按依赖顺序 bound。分叉测试用 vm.createSelectFork("ethereum")、deal()、assumeNoBlacklisted(),非标准代币用 forceApprove()。不变量测试分 handlers、stores 与 Invariant.t.sol,只 target handler 并排除协议合约。脚本继承 BaseScript,使用 ETH_FROM、MNEMONIC 等环境变量,先模拟后用 forge script --broadcast --verify。
运行与调试命令包括 forge test --match-path、--match-contract、--match-test、--fuzz-runs、forge coverage --report lcov,以及 -v 至 -vvvvv 的详细级别、console2.log 日志、forge debug、forge inspect storage-layout 和 --gas-report。限制:正确性依赖实际代码库中的示例;形式化验证、gas 基准测试与部署检查清单的具体做法暂未提供详细内容。