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

相关文章

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

利用python实现对excel文件进行加密

《利用python实现对excel文件进行加密》由于文件内容的私密性,需要对Excel文件进行加密,保护文件以免给第三方看到,本文将以Python语言为例,和大家讲讲如何对Excel文件进行加密,感兴... 目录前言方法一:使用pywin32库(仅限Windows)方法二:使用msoffcrypto-too

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

Python实现word文档内容智能提取以及合成

《Python实现word文档内容智能提取以及合成》这篇文章主要为大家详细介绍了如何使用Python实现从10个左右的docx文档中抽取内容,再调整语言风格后生成新的文档,感兴趣的小伙伴可以了解一下... 目录核心思路技术路径实现步骤阶段一:准备工作阶段二:内容提取 (python 脚本)阶段三:语言风格调

QT进行CSV文件初始化与读写操作

《QT进行CSV文件初始化与读写操作》这篇文章主要为大家详细介绍了在QT环境中如何进行CSV文件的初始化、写入和读取操作,本文为大家整理了相关的操作的多种方法,希望对大家有所帮助... 目录前言一、CSV文件初始化二、CSV写入三、CSV读取四、QT 逐行读取csv文件五、Qt如何将数据保存成CSV文件前言

通过Spring层面进行事务回滚的实现

《通过Spring层面进行事务回滚的实现》本文主要介绍了通过Spring层面进行事务回滚的实现,包括声明式事务和编程式事务,具有一定的参考价值,感兴趣的可以了解一下... 目录声明式事务回滚:1. 基础注解配置2. 指定回滚异常类型3. ​不回滚特殊场景编程式事务回滚:1. ​使用 TransactionT

Java中使用Hutool进行AES加密解密的方法举例

《Java中使用Hutool进行AES加密解密的方法举例》AES是一种对称加密,所谓对称加密就是加密与解密使用的秘钥是一个,下面:本文主要介绍Java中使用Hutool进行AES加密解密的相关资料... 目录前言一、Hutool简介与引入1.1 Hutool简介1.2 引入Hutool二、AES加密解密基础

SpringSecurity6.0 如何通过JWTtoken进行认证授权

《SpringSecurity6.0如何通过JWTtoken进行认证授权》:本文主要介绍SpringSecurity6.0通过JWTtoken进行认证授权的过程,本文给大家介绍的非常详细,感兴趣... 目录项目依赖认证UserDetailService生成JWT token权限控制小结之前写过一个文章,从S

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.