Forge 标准库

本章介绍 Forge 标准库。

推特@Hita_DAO    DiscordHitaDAO

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 提供有用的数学函数。