学习Foundry之编写测试代码(二):标准库与作弊码
上文,我们基于Forge标准库
中Test
合约来编写了EtherStoreTest
合约,本文来进一步介绍Forge标准库
里的内容。
Forge标准库
提供了以下功能:
Vm.sol
:最新的作弊码(cheatcodes)接口。console.sol
和console2.sol
:包含了Hardhat风格的日志功能。Script.sol
:Solidity Scripting
的基础工具。Test.sol
:DSTest的超集,包含了标准库,作弊码接口(vm)和Hardhat控制台。
在上文中,我们通过导入Test.sol
文件,然后在我们的合约中继承Test
:
import "forge-std/Test.sol";
import "../src/Re-Entrancy.sol";
contract EtherStoreTest is Test {
}
现在,我们就可以使用以下代码:
// 修改msg.sender为alice
vm.startPrank(alice);
// 断言alice的DAI
assertEq(dai.balanceOf(alice), 10000e18);
// 使用Hardhat记录日志
console.log(alice.balance);
// 使用Forge Std库的接口
deal(address(dai), alice, 10000e18);