truffle 进行智能合约测试

2023-10-08 23:40

本文主要是介绍truffle 进行智能合约测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 参考资料:

以太坊区块链开发 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.

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

这篇关于truffle 进行智能合约测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/168783

相关文章

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

基于Python实现智能天气提醒助手

《基于Python实现智能天气提醒助手》这篇文章主要来和大家分享一个实用的Python天气提醒助手开发方案,这个工具可以方便地集成到青龙面板或其他调度框架中使用,有需要的小伙伴可以参考一下... 目录项目概述核心功能技术实现1. 天气API集成2. AI建议生成3. 消息推送环境配置使用方法完整代码项目特点

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结