用途:为 EVM 智能合约提供测试编写模式,覆盖 Foundry(Solidity)与 Hardhat(TypeScript)。该技能聚焦如何写出有效测试,不涉及工具安装或 CLI 命令;Foundry 的安装、命令与部署请参考 foundry 技能。
主要能力:单元测试(测试结构、命名、自定义错误与 require 字符串断言、多事件顺序断言);模糊测试(随机输入、bound 与 vm.assume 的区别、多参数模糊、fuzz 配置);不变量测试(有状态随机调用序列、Handler 模式与 ghost 变量、invariant 配置);分叉测试(真实主网状态、固定区块号、多分叉切换);Gas 优化(forge snapshot 回归跟踪、测试内联 gas 统计、按函数 gas 报告);Hardhat 测试(Mocha/Chai、loadFixture、时间操纵)。
必要用法要点:Foundry 测试是 .t.sol 文件并继承 forge-std/Test.sol,测试函数以 test 开头;vm.prank 只影响下一次外部调用,多次调用同一地址需用 vm.startPrank 与 vm.stopPrank;vm.expectRevert 必须放在调用之前;vm.expectEmit 需先调用、再 emit 期望事件、最后执行目标函数;分叉测试应固定区块号以避免状态变化导致的抖动;deal 适用于标准 ERC20,对 rebasing、fee-on-transfer 或非标准存储布局的代币可能失效,此时可改用 impersonate 大户。Hardhat 使用 Mocha 的 describe/it 与 Chai 的 expect,不存在 Jest 匹配器。
适用场景:为 ERC20、金库、借贷池、AMM 等合约编写单元、模糊、不变量与分叉测试,并进行 Gas 回归对比。
限制:资料未提供该技能的安装方式、收费、价格、平台支持范围与效果保证;部分内容(如重入测试模式)在资料中未完整展开。