智能合约测试、调试与分叉测试全解析
1. Foundry 测试与追踪
在进行单元测试时,我们可以使用 -vvvv 标志再次运行测试,这样就能看到单元测试的追踪信息。以下是 Foundry 追踪的一般格式:
[<Gas Usage>] <Contract>::<Function>(<Parameters>)
├─ [<Gas Usage>] <Contract>::<Function>(<Parameters>)
│ └─ ← <Return Value>
└─ ← <Return Value>
通过这种追踪信息,我们可以轻松确定哪个函数调用使用了多少 gas,这对于测试不同的实现并比较它们的 gas 使用情况非常有用。不过,如果使用的是外部库或已部署在以太坊区块链上的合约,Foundry 可能并不总是知道所有函数签名。在这种情况下,追踪中不会显示合约和函数的名称,而是会打印合约的地址和函数调用的 calldata。
2. Foundry 中的作弊码使用
2.1 作弊码的必要性
普通的单元测试有时并不足以满足需求,例如函数可能会抛出异常或有入口守卫。因此,需要使用作弊码来从不同地址发送请求、为账户提供 Ether,或者期望合约发生回滚和发出事件。期望回滚和事件对于测试合约在错误情况下是否回滚或是否正确发出事件非常重要。如果不期望回滚,测试用例可能会因为遇
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



