truffle 进行智能合约测试

本文提供了一个以太坊区块链开发的Truffle入门教程,包括安装Truffle和VSCode插件,设置本地Ganache,编写并部署智能合约,进行合约测试,以及在TruffleDevelop环境中运行和测试合约。在过程中,强调了合约编译器版本匹配和处理异步操作的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 参考资料:

以太坊区块链开发 truffle 入门教程 1_哔哩哔哩_bilibili

快速入门 Truffle | Truffle 中文文档 - DApp 开发框架 | 深入浅出区块链 (learnblockchain.cn)

1.安装

  • 下载node.js  利用npm 下载truffle :  npm install -g truffle
  • 安装vscode 插件、

 下载完成会多一个这个标志,然后点进去,会让检测让你下载几个东西,按照提示下载即可。

  •  安装本地Ganache

 打开之后点击新建,

 记住端口号,后面连接会用到。

2.部署

1.新建一个目录,打开终端输入 truffle init 

目录结构自上往下,依次是存放合约、存放合约迁移文件,存放合约测试文件、truffle配置文件。

2.利用vscode打开,新建Test.sol

// SPDX-License-Identifier: MIT
pragma solidity >=0.4 <=0.9;

contract Test {
    uint x;

    constructor(uint x0) {
        x = x0;
    }

    function setX(uint x1) public {
        x = x1;
    }

    function getX() public view returns (uint) {
        return x;
    }
}

3.新建 1_deploy_contract.js(多个迁移文件,开头必须加数字,表明迁移顺序)

const Test = artifacts.require("Test");

module.exports = function (deployer) {
    deployer.deploy(Test, 1);
}

默认情况没有,创建新连接,连接本地Ganache

 4.创建 一个新连接,选第一个,再选local,输入我们上文本地创建的Ganache端口号,点击回车。

出现这个表明 成功。 

 

 5.修改truffle-config.js 配置, 下面 的port对应也是本地Ganche

 6.在终端输入 truffle compile 

 接着输入,truffle migrate ,控制台出现下面,本地ganache出现日志代表部署成功。

 

 3.测试

接着上文,新建1_test.js 

const Test = artifacts.require("Test");

contract("Test test", () => {
    it("This is Test File!", async () => {
        const Test1 = await Test.deployed();
        await Test1.setX(2);
        const x = await Test1.getX();
        assert(x.toString() == "2", "failed test!")
    })
})

执行truffle test ,出现下面,证明测试成功。 

 4.使用truffle develop 进行部署

我们安装truffle之后,有一个内置的的个人模拟区块链,不需要连接本地Ganache。

区别与上文编辑连接配置,直接 控制台输入 truffle develop ,会进入truffle 控制台。

 在truffle 控制台执行compile ,migrate 、test命令 会跟上文有同样的效果。

5. 错误解决

1.

 你truffle 配置文件的编译器版本和你测试合约要求编译器版本不适应。

2.

 像下方await 表名他是一个异步操作,返回一个promise对象,以及我们调用合约中的函数,在js测试文件都是异步操作,函数 加async 关键字, await修饰。

 

   9545: {
      host: "127.0.0.1",     // Localhost (default: none)
      port: 9545,            // Standard Ethereum port (default: none)
      network_id: "5777",       // Any network (default: none)
      confirmations: 2 // 先加这个参数,然后他会报错之后取消就可以了
    },

3.

 反正吗,这种配置文件及相关全弄好了,就是报错,我的打印了账户之后,又重新执行了就没报错了。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

来自马达加斯加的黑猫杰克

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值