首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Foundry之测试部署后的合约

Foundry之测试部署后的合约

原创
作者头像
孟斯特
发布2025-01-19 21:31:26
发布2025-01-19 21:31:26
2220
举报
文章被收录于专栏:EthereumEthereum

在之前文章中,我们介绍了如何使用Foundry将我们的合约部署到区块链上,现在简单介绍如何对已部署的合约进行测试。

还是以之前的SimpleStorage.sol合约为例:

代码语言:solidity
复制
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface IStorage  {
    function setString(string calldata newString) external;

    function getString() external view returns (string memory);
}

contract SimpleStorage {
    string private storedString;

    function setString(string memory newString) public {
        storedString = newString;
    }

    function getString() public view returns (string memory) {
        return storedString;
    }
}

在上面的合约中,我们定义IStorage接口,接口包含两个方法:

  • setString:设置字符串
  • getString:获取字符串

按照前面介绍的内容,合约部署完成后我们会得到合约的地址,因为我们的合约没有提供通过合约地址实例化的方法,所以我们需要使用接口的形式来调用部署后的合约。在test目录下创建String.t.sol文件:

代码语言:solidity
复制
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "forge-std/Test.sol";
import "../src/String.sol";

contract SimpleStorageTest is Test{
    IStorage public ss;
    uint256 deployerPrivateKey = vm.envUint("RAW_PRIVATE_KEY");
    address owner;
    function setUp() public {
        owner = vm.addr(deployerPrivateKey);
        address deployedAddress = 0x92dfaA34de4bcf1630f5DAE6df20c5DcF33018f1;
        ss = IStorage(deployedAddress);
    }

    function testSetString() public{
        ss.setString("Hello, world!");
        assertEq(ss.getString(), "Hello, world!");
    }
}

执行测试命令:

代码语言:bash
复制
$ forge test --mt testSetString
[⠊] Compiling...
[⠑] Compiling 35 files with Solc 0.8.28
[⠒] Solc 0.8.28 finished in 1.66s
Compiler run successful!

Ran 1 test for test/String.t.sol:SimpleStorageTest
[PASS] testSetString() (gas: 33864)
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 732.47µs (198.64µs CPU time)

Ran 1 test suite in 29.12ms (732.47µs CPU time): 1 tests passed, 0 failed, 0 skipped (1 total tests)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档