Web3 通过truffle 脚本进行智能合约测试

news2024/7/6 20:19:29

上文 Web3 处理智能合约部署到本地区块链,并在本地进行测试中 我们讲解了部署智能合约 然后在终端测试的方法
但上文那种终端测试 其实并不保险 而且也比较不专业
对于这个 有一个mocha测试 这是基于node部署环境的一种环境测试 但是这个需要一定的基础 大家可以专门去学一下
还有就是 今天要说的 truffle 脚本
他是一个脚本执行器

先打开我们的 Truffle项目
在这里插入图片描述
在根目录下创建一个文件夹,这个其实叫什么都可以。
我这里 直接叫 scripts

然后 里面直接放脚本 js文件 名字随便起
我这里直接叫 test.js
在这里插入图片描述
然后 我们这里的脚本是有一个引入的操作
在这里插入图片描述
直接将上面这句也拿到我们脚本js中

const Contacts = artifacts.require("StudentStorage.sol")

module.exports = function(callback) {
    console.log("脚本执行");
    callback()
}

在这里插入图片描述
当然 我们先不急着去用 还是先让它跑起来
然后 我们以管理员身份打开项目终端 输入

truffle exec 需要执行的脚本路径

那么 我这个显然就是

truffle exec .\scripts\test.js

在这里插入图片描述
然后 我们刚刚写的脚本就跑起来了

那么 确认没问题之后 我们就可以写我们真的想看的东西了

我们先将test.js的代码改成这样

const Contacts = artifacts.require("StudentStorage.sol")

module.exports = async function(callback) {
    const studentStorage = await Contacts.deployed();
    callback()
}

这里 我们给方法定上了async 然后 await 异步等待ontacts.deployed
智能合约实例化
然后 等待完成 就拿到这个合约的实例了

然后 我们进一步去写

await studentStorage.setData(11,"天山派掌门");
const res = await studentStorage.getData();
console.log(res);

在这里插入图片描述
我们利用拿到的合约对象 去调用其中的 set方法赋值 然后 调用get获取数据 他们都是异步的 所以 要加一个await 让他们执行完成之后 再继续往下
最后拿到get取回来的值 然后输出在控制台上
然后 我们还是先终端执行

truffle migrate

将合约部署到区块链中
然后 再次运行

truffle exec .\scripts\test.js

去操作合约
在这里插入图片描述
可以看到 我们的数据就正常展示了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/728076.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国产BI工具和国外BI工具,差距大不大,用哪种比较好?

自“十四五”以来,我国诸多政策开始推动信创产业的深入,实现关键数字技术自主研发和自主可控。我国信创产业竞争力不断突破,国产化进程稳步推进。2022年开始政策重点提及“数字经济”、“数字政府”和国家信息化。在此背景下,BI产…

el-date-picker 的初始化数据格式理解、报错 “TypeError: date.getFullYear is not a function“

个人理解 如果后端传给前端的时间数据是字符串类型的,那么当触发 el-date-picker 组件时,就会报出很多错误,例如 这是由于初始化赋值格式的问题,需要对初始化值,进行一个 new Date(your_time_data) 前端演示模板&…

虚拟机快速克隆的步骤

目录 1、关于让应用的快捷方式出现在开始栏的方法2、使用VMware快速克隆2-12-22-32-42-5 克隆虚拟机命名 1、关于让应用的快捷方式出现在开始栏的方法 把应用的快捷方式,放到这个目录中 C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs2、…

uniapp app分享pdf等文件等到微信以及其他应用

uniapp自带的api uni.share只能分享图文等,但不能分享pdf这种之类的 想实现分享文件这种就要调用系统的分享功能 分享插件地址 这个插件完美解决,安卓分享到微信也不需要配置appid 封装用法 /*** 任意文件分享,需勾选云插件并云打包* 安卓调用系统分享无…

DFS解决N-皇后问题

题目: n−皇后问题是指将 n个皇后放在 nn的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n,请你输出所有的满足条件的棋子摆法。 输入格式 共一行,包…

《IntelliJ IDEA 2023最新版快捷键大全GIF动图演示》——提升你的开发效率

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

用css来实现上下左右箭头

i {/* 用border值来控制箭头粗细 */border: 3px solid black;/* 上、右、下、左 四个边框的宽度 */border-width: 0px 1px 1px 0px;display: inline-block;/* padding值控制箭头大小 */padding: 5px; } ____________________________________.right {transform: rotate(-45deg…

浮动——案例

案例1——做出如下图的框架 提示&#xff1a;用ul li来完成 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sc…

KnowStreaming系列教程第一篇——安装和使用

KnowStreaming介绍 Know Streaming是一套云原生的Kafka管控平台&#xff0c;脱胎于众多互联网内部多年的Kafka运营实践经验&#xff0c;专注于Kafka运维管控、监控告警、资源治理、多活容灾等核心场景。在用户体验、监控、运维管控上进行了平台化、可视化、智能化的建设&#…

一份保姆级的Stable Diffusion部署教程,开启你的炼丹之路 | 京东云技术团队

市面上有很多可以被用于AI绘画的应用&#xff0c;例如DALL-E、Midjourney、NovelAI等&#xff0c;他们的大部分都依托云端服务器运行&#xff0c;一部分还需要支付会员费用来购买更多出图的额度。在2022年8月&#xff0c;一款叫做Stable Diffusion的应用&#xff0c;通过算法迭…

利用css实现渐变色(通俗易懂)

利用css实现渐变色 0、前言1、线性渐变2、径向渐变2.1 径向渐变2.1.1 圆形2.1.2 椭圆形 2.2 重复性径向渐变 3、边框颜色渐变3.1 边框渐变3.1.1 线性渐变3.1.2 径向渐变 3.2 单侧边框渐变3.2.1 底部边框线性渐变3.2.2 右侧边框线性渐变 4、扩展&#xff08;CSS线性渐变颜色网站…

vscode离线安装插件提示版本不兼容,安装失败的处理方法

因为公司是内网&#xff0c;无法在线下载插件&#xff0c;只能通过离线下载的方式安装插件&#xff0c;但是提示版本不兼容&#xff0c;安装失败&#xff0c;后面解决了&#xff0c;记录一下处理方法。 1. 首先查看vscode版本号 2. 将.vsix文件压缩 然后打开压缩文件&#x…

Lesson3-2:OpenCV图像处理---形态学操作

形态学操作 学习目标 理解图像的邻域&#xff0c;连通性 了解不同的形态学操作&#xff1a;腐蚀&#xff0c;膨胀&#xff0c;开闭运算&#xff0c;礼帽和黑帽等&#xff0c;及其不同操作之间的关系 1 连通性 在图像中&#xff0c;最小的单位是像素&#xff0c;每个像素周围…

springboot dubbo seata nacos集成 分布式事务seata实现

文章目录 Seata介绍dubbo介绍目标版本说明和代码地址pom.xml验证模块microservice-boot-commonmicroservice-boot- plat 验证结果注意事项 Seata介绍 官网&#xff1a;http://seata.io/zh-cn/docs/overview/what-is-seata.html Seata 是一款开源的分布式事务解决方案&#xff…

从零开始 Spring Boot 63:Hibernate 继承映射

从零开始 Spring Boot 63&#xff1a;Hibernate 继承映射 图源&#xff1a;简书 (jianshu.com) 关系型数据库设计中是不存在继承概念的&#xff0c;但实体类可以用继承来组织代码结构&#xff0c;所以需要用一种方式将实体类的继承结构映射到表结构。 本文将介绍几种在 JPA&a…

LCD1602显示屏只亮不显示字符

代码能在普中的板子能正常显示&#xff0c;但是换了块板子就不行&#xff1a; 调节显示屏下方的可调电阻 在调试中找到自己适合的值&#xff0c;就可以看见字符了

5、加载3dtileset模型并定位到模型

这一节使用CCesium加载3dtiles模型&#xff0c;3dtiles模型使用ceisum官网示例中的模型&#xff0c;加载3dtiles功能目前只能添加没有压缩的模型&#xff0c;draco或其他解压缩功能没有写。 1、在上一个例子的基础上&#xff0c;将鼠标事件改成右键的鼠标事件Cesium::ScreenSp…

科研热点|重磅!华为,唯一单位首发Nature!

今日&#xff0c;国际顶级学术期刊《自然》(Nature)杂志正刊发表了华为云盘古大模型研发团队研究成果——《三维神经网络用于精准中期全球天气预报》&#xff08;《Accurate medium-range global weather forecasting with 3D neural networks》&#xff09;。数据显示&#xf…

医学报告怎样翻译效果好?

我们知道&#xff0c;医学报告是医学翻译领域比较重要的一个项目&#xff0c;许多国际医学期刊和杂志都要求医学报告必须是英语的&#xff0c;促使医学报告翻译的需求量越来越大。那么&#xff0c;怎样翻译医学报告&#xff0c;医学报告中译英哪里比较专业&#xff1f; 据了解&…

Java类加载深度剖析-大白话

Java类加载深度剖析 1.类加载的入口2.AppClassLoader、ExtClassLoader、BootstrapClassLoader的血脉渊源3.ExtClassLoader究竟是不是孙大圣4.为什么自定义类加载器的父类加载器是AppClassLoader呢&#xff1f;5.我们应该如何打破双亲委派机制呢&#xff1f;6.如何保证同class对…