【合约开发工具】如何使用 hardhat 在本地测试合约

本文介绍了如何配置和使用Hardhat进行本地Solidity智能合约的测试。首先,需要安装hardhat-ethers和相关依赖,并在hardhat.config.ts中导入。然后,展示了使用Mocha测试框架编写测试代码的例子,包括部署合约和执行测试用例。最后,通过npx hardhat test运行测试并展示测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

本文介绍如何使用 hardhat 在 solidity 项目中本地测试智能合约,并介绍一些简要的写法。

基本配置

在本地测试与部署前,需要认识与安装一些 hardhat 的插件。

  • hardhat-ethers
    安装:
    npm install -D hardhat-deploy
    npm install --save-dev @nomiclabs/hardhat-ethers 'ethers@^5.0.0'
    npm install --save-dev @nomiclabs/hardhat-ethers@npm:hardhat-deploy-ethers ethers
    安装插件的主要目的是能让我们在 test script 中方便的模拟合约与部署。

TIPS: 若使用了 hardhat-deploy-ethers 插件,会有些功能用不了,这是因为 hardhat-deploy-ethers 作为 hardhat-ethers 的一个 fork,还有很多不完善的 hardcode 在代码中。
虽然目前没有解决办法,但官方说以后会作为扩展兼容。

之后,在 hardhat.config.ts 中,import 依赖。

这点很重要,一定要在配置文件中import,其他地方配置 hardhat 会因为读不到类型而报错。

测试代码

sample.test.ts

import {expect} from "./chai-setup";
//ethers的引入很重要,许多功能都由其提供。
import {deployments, ethers, getNamedAccounts} from 'hardhat';
import {BigNumber, Contract} from "ethers";

//测试使用的是基础的js测试框架 -- mocha
//具体语法参考:https://mochajs.cn/
describe("Greeter", function() {

  let greeter: Contract;

  it("Should return the new greeting once it's changed", async function() {

    greeter = await (await ethers.getContractFactory('Greeter')).deploy("Hello, world!");
    await greeter.deployed();
    expect(await greeter.greet()).to.equal("Hello, world!");

    const setGreetingTx = await greeter.setGreeting("Hola, mundo!");
    // wait until the transaction is mined
    await setGreetingTx.wait();
    expect(await greeter.greet()).to.equal("Hola, mundo!");
  });
});

本地测试

npx hardhat test

测试结果如图:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值