当前位置: 首页 > news >正文

hardhat 单元测试时如何观察gas消耗情况

文章目录

  • 前言
    • hardhat 单元测试时如何观察gas消耗情况
      • 1. 安装依赖与配置
      • 2. 演示示例

前言

如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


hardhat 单元测试时如何观察gas消耗情况

1. 安装依赖与配置

安装gas reporter 组件:

yarnadd-Dhardhat-gas-reporter


修改hardhat.config.ts 配置中开启gas-reporter:
引入:

import"hardhat-gas-reporter";

添加:

gasReporter:{enabled: true, currency:"USD", token:"ETH"}

2. 演示示例

合约:

// SPDX-License-Identifier: UNLICENSED pragma solidity ^0.8.28;contract HelloWorld{uint a;uint b;functionhello()public pure returns(string memory){return"Hello World";}functiontest1()public{a++;}functiontest2()public{a++;b++;}}

单元测试:

import"@nomicfoundation/hardhat-ethers";import{ethers}from"hardhat";import{expect}from"chai";describe("HelloWorld",function(){it("should get the hello world", async()=>{// 步骤如下: //1. setup 安装合约 //2.importcontract 引入合约 //3.testaction //安装合约 const HW=await ethers.getContractFactory("HelloWorld");// 部署合约,拿到合约实例 const hw=await HW.deploy();await hw.waitForDeployment();//等待部署完成 // 测试gasfor(let index=0;index<10;index++){await hw.test1();await hw.test2();}// 测试合约的方法调用结果,并输出 expect(await hw.hello()).to.equal("Hello World");});});

执行单元测试:

npx hardhattest

可以看到下图,每个方法的gas使用都会在控制台上打印出来。

说明:

字段含义重点观察点
Min该方法执行的最小 Gas 消耗代表最优情况下的 Gas 成本
Max该方法执行的最大 Gas 消耗代表最坏情况下的 Gas 成本(比如状态变化、循环分支差异)
Avg该方法执行的平均 Gas 消耗最具参考价值,反映日常调用的平均成本
# calls该方法在测试中被调用的总次数确认你的测试用例是否覆盖了足够多的调用场景
usd (avg)按当前 ETH 价格换算的平均美元成本直观感受实际部署后的经济成本(这里显示 - 是因为未配置价格)
http://www.jsqmd.com/news/474348/

相关文章:

  • 【无标题】鲜艺AI抠图3.1
  • X-AnyLabeling全场景技术问题解决方案:从安装到高级应用的系统化故障排除指南
  • Java实现调用HTTP请求的几种常见方式
  • 风电、光伏与储能(含电池和废弃矿井小型抽水蓄能)互补调度运行研究(Matlab代码实现)
  • 配置nginx访问本地静态资源、本地图片、视频。
  • 数据库入门
  • Windows 11兼容性适配技术攻关指南:Locale Emulator运行异常深度解析
  • 你还在 for 循环里使用 + 拼接字符串?明天不用来上班了!
  • 杰理之同声翻译【篇】
  • 3大核心优势,零门槛搭建企业级多商户电商平台:Lilishop全解析
  • 老牌 Java JSON 库杀入 AI 赛道:一行代码省 50% Token 费用
  • 软件开发工具分享
  • 2026年最新时序同笺用户保姆级教程
  • 适用于IntelliJ IDEA 2024.1.2部署Tomcat的完整方法,以及笔者踩的坑,避免高血压,保姆级教程
  • 1995-2025年美国商务部文本库
  • 腾讯云“当前登录IP”与个人实际IP不符
  • 【硕士论文复现】可再生能源发电与电动汽车的协同调度策略研究(Python代码实现)
  • uboot移植实战:DDR初始化参数优化与imx6ull适配指南
  • Kafka 为什么会丢消息?根源剖析与避坑指南
  • lidar与radar融合调研
  • 四川商业市场调查机构排行及选购指南:成都市场调查公司电话/成都找人公司价格/成都找人公司推荐/成都找人公司电话/选择指南 - 优质品牌商家
  • 【亲测】2026年OpenClaw(Clawdbot)华为云四步搭建喂饭级步骤
  • nlp_structbert_sentence-similarity_chinese-large 服务高可用架构设计:多副本与负载均衡
  • 厂长资源 1.0.4 | Czzy超清影视聚合站.官方入口
  • 一键部署的AI智能体新标杆
  • 2026临平崇贤写字楼招租TOP5品牌推荐:临平写字楼租赁/临平厂房招租/临平崇贤写字楼招租/临平写字楼招商/临平写字楼出租/选择指南 - 优质品牌商家
  • 西门子罗宾康LDZ14501000.070
  • LabView 血氧采集系统源码
  • 鸿蒙生态崛起:深度解析鸿蒙开发人员职责、技能要求与面试指南
  • 基于MATLAB的数字滤波器设计及语音信号去噪