Forge 标准库
本章介绍 Forge
标准库。
Forge Standard Library(简称 Forge Std
)是一个非常有用的合约集合,可以让编写测试更简单、更快速、更人性化。
Forge Std
是使用 Foundry
编写测试的首选方式。
Forge 标准库功能
Forge
标准库提供了开始编写测试所需的所有基本功能:
- Vm.sol:最新的作弊码接口
- console.sol 和 console2.sol:Hardhat 风格的日志记录功能
- Script.sol:Solidity 脚本的基本实用程序
- Test.sol:包含标准库、作弊码实例 (vm) 和 控制台
Forge 标准库使用
使用 Forge
标准库的包含的合约,可以简单的导入 Test.sol ,并在测试用例合约中继承 Test :
import "forge-std/Test.sol"; contract ContractTest is Test { // ... }
现在可以使用:
// Access Hevm via the `vm` instance vm.startPrank(0xb653...0a76);
// Assert and log using Dappsys Test assertEq(dai.balanceOf(0xb653...0a76), 10000e18);
// Log with the Hardhat `console` (`console2`) console.log(address(0xb653...0a76).balance);
// Use anything from the Forge Std std-libraries deal(address(dai), 0xb653...0a76, 10000e18);
要单独导入 Vm
接口或 console
库:
import "forge-std/Vm.sol"; import "forge-std/console.sol";
注意: console2.sol 包含 console.sol 的补丁,允许 Forge 解码控制台调用的跟踪,但它与 Hardhat 不兼容。
import "forge-std/console2.sol";
Forge 标准库组成
标准库 Forge Std
目前由六个标准库组成。
- Std Logs
Std Logs 日志记录事件。
- Std Assertions
Std Assertions 断言函数。
- Std Cheats
Std Cheats 作弊码的包装器。
- Std Errors
Std Errors 提供常见错误 errors 和回退 reverts 的包装器。
- Std Storage
Std Storage 使操作合约存储变得容易。它可以找到并写入与特定变量关联的存储槽。
- Std Math
Std Math 提供有用的数学函数。