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

相关文章

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

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

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

Python使用DrissionPage中ChromiumPage进行自动化网页操作

《Python使用DrissionPage中ChromiumPage进行自动化网页操作》DrissionPage作为一款轻量级且功能强大的浏览器自动化库,为开发者提供了丰富的功能支持,本文将使用Dri... 目录前言一、ChromiumPage基础操作1.初始化Drission 和 ChromiumPage

Jackson库进行JSON 序列化时遇到了无限递归(Infinite Recursion)的问题及解决方案

《Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursion)的问题及解决方案》使用Jackson库进行JSON序列化时遇到了无限递归(InfiniteRecursi... 目录解决方案‌1. 使用 @jsonIgnore 忽略一个方向的引用2. 使用 @JsonManagedR

使用Folium在Python中进行地图可视化的操作指南

《使用Folium在Python中进行地图可视化的操作指南》在数据分析和可视化领域,地图可视化是一项非常重要的技能,它能够帮助我们更直观地理解和展示地理空间数据,Folium是一个基于Python的地... 目录引言一、Folium简介与安装1. Folium简介2. 安装Folium二、基础使用1. 创建