39、智能合约测试、调试与分叉测试全解析

智能合约测试、调试与分叉测试全解析

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,或者期望合约发生回滚和发出事件。期望回滚和事件对于测试合约在错误情况下是否回滚或是否正确发出事件非常重要。如果不期望回滚,测试用例可能会因为遇

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值