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

NodeJS全栈WEB3面试题——P7工具链 测试

📊 7.1 Truffle vs Hardhat:各自的优势?

项目TruffleHardhat
📦 成熟度老牌框架,社区大,文档全面新一代框架,现代化设计
🧪 测试支持内置 Mocha 测试框架支持 Mocha + Chai,并集成 TypeScript
⚡️ 运行速度较慢更快(使用 EVM 仿真器)
🧰 插件生态丰富但偏老旧新插件多、活跃度高,如 hardhat-deploy
🔎 调试体验支持调试,但较弱原生支持 Solidity 堆栈追踪,调试强大
🔄 兼容性与 Ganache 配套使用好可与 Alchemy、Infura、Ethers.js 集成更紧密

总结:我更偏向使用 Hardhat,特别是在实际开发和部署过程中,调试体验和部署脚本更灵活。


🧪 7.2 如何写 Solidity 单元测试?可以用哪些工具?

✅ 工具推荐:
  • Hardhat(+ Ethers.js + Chai)

  • Foundry(Rust 风格,速度极快)

  • Truffle + Web3.js

  • Remix IDE(适合新手快速调试)

✅ 编写步骤(以 Hardhat + Chai + Ethers 为例):
// 合约:contracts/Counter.sol
contract Counter {uint public count;function increment() public { count++; }
}
// 测试:test/Counter.test.js
const { expect } = require("chai");describe("Counter", function () {it("should increment count", async function () {const Counter = await ethers.getContractFactory("Counter");const counter = await Counter.deploy();await counter.increment();expect(await counter.count()).to.equal(1);});
});

📌 测试流程包括:部署合约、调用方法、断言状态。


🏡 7.3 怎样在本地模拟区块链?

✅ 常用方式:

  1. Hardhat 本地节点

npx hardhat node
  • 自动创建10个账户,带私钥和余额;

  • 可以配合 frontend 使用 http://localhost:8545

  1. Ganache(GUI / CLI)

ganache-cli -p 8545
  • 提供 GUI 模拟环境,适合测试多个账户交互;

  • 可设置初始余额、区块时间间隔等;

  1. Foundry 内置模拟环境(Forge)

  • Rust 风格测试,速度极快,适合高频测试。

  1. Remix VM 环境

  • Web IDE,不需安装,可快速部署和测试合约。


🧰 7.4 Ganache、Foundry、Remix 各自的使用场景?

工具适用场景特点
Ganache本地部署、多账户交互测试GUI 直观、Truffle 配套
Foundry高性能单元测试、CI快速(原生 Rust 编译)、支持 Solidity 单测
Remix学习、新手测试、PoC 快速验证Web 版无需环境、内置 VM、调试易用

📌 我的使用经验是:

  • 开发初期:Remix 快速写合约;

  • 中期集成测试:Hardhat + Ganache

  • 高速单测或 fuzzing:用 Foundry 更适合团队协作和 CI。


🚀 7.5 如何部署一个合约到测试网(如 Goerli)?

✅ 使用 Hardhat 步骤:
  1. 安装依赖

npm install --save-dev hardhat ethers dotenv
  1. 配置网络(hardhat.config.js)

require('dotenv').config();
module.exports = {networks: {goerli: {url: process.env.GOERLI_RPC_URL,accounts: [process.env.PRIVATE_KEY]}},solidity: "0.8.20"
};
  1. 编写部署脚本

async function main() {const [deployer] = await ethers.getSigners();const Counter = await ethers.getContractFactory("Counter");const counter = await Counter.deploy();console.log("Counter deployed to:", counter.address);
}
main();
  1. 部署命令

npx hardhat run scripts/deploy.js --network goerli
  1. 环境变量(.env)

GOERLI_RPC_URL=https://eth-goerli.g.alchemy.com/v2/yourKey
PRIVATE_KEY=yourPrivateKey

📌 注意事项:

  • 测试币可以通过 Goerli Faucet 获取;

  • 部署前确保 gas 充足,网络正常;

  • 可用 verify 插件在 Etherscan 上自动验证源码。

http://www.lryc.cn/news/2396683.html

相关文章:

  • Mybatis框架各配置文件主要内容详解(二)
  • 【优选算法 | 队列 BFS】构建搜索流程的核心思维
  • virtio介绍 (三)--spdk作为virtio后端处理nvme盘io的流程--上
  • 关于BackgroundScheduler的pause
  • 设计模式(行为型)-中介者模式
  • 【Java学习笔记】异常
  • MySQL:视图+用户管理+访问+连接池原理
  • neo4j 5.19.0安装、apoc csv导入导出 及相关问题处理
  • C/C++ OpenCV 矩阵运算
  • 无人机桥梁3D建模的拍摄频率
  • ESP32-idf学习(三)esp32C3连接iot
  • 详解鸿蒙仓颉开发语言中的计时器
  • 【计算机网络】第3章:传输层—拥塞控制原理
  • Vue3(watch,watchEffect,标签中ref的使用,TS,props,生命周期)
  • 【nssctf第三题】[NSSCTF 2022 Spring Recruit]easy C
  • Cocos 打包 APK 兼容环境表(Android API Level 10~15)
  • 数据结构之堆:解析与应用
  • DBeaver导入/导出数据库时报错解决方案
  • GPIO模拟串口通信
  • uniapp与微信小程序开发平台联调无法打开IDE
  • 第十二节:第五部分:集合框架:Set集合的特点、底层原理、哈希表、去重复原理
  • 【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器
  • 基于大数据的个性化购房推荐系统设计与实现(源码+定制+开发)面向房产电商的智能购房推荐与数据可视化系统 基于Spark与Hive的房源数据挖掘与推荐系统设计
  • FFmpeg学习笔记
  • Chrome 通过FTP,HTTP 调用 Everything 浏览和搜索本地文件系统
  • GpuGeek如何成为AI基础设施市场的中坚力量
  • 【Hot 100】45. 跳跃游戏 II
  • Codeforces Round 1026 (Div. 2) C. Racing
  • Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)
  • oracle sql 语句 优化方法