市值: $2.6208T 0.16%
體積(24小時): $132.1262B -30.02%
恐懼與貪婪指數:

17 - 極度恐懼

  • 市值: $2.6208T 0.16%
  • 體積(24小時): $132.1262B -30.02%
  • 恐懼與貪婪指數:
  • 市值: $2.6208T 0.16%
加密
主題
加密植物
資訊
加密術
影片
頂級加密植物

選擇語言

選擇語言

選擇貨幣

加密
主題
加密植物
資訊
加密術
影片

如何使用HardHat測試智能合約?

Hardhat is an Ethereum development environment that streamlines smart contract testing with tools like Mocha and Chai, ensuring reliable deployment.

2025/07/26 23:15

什麼是硬漢,為什麼將其用於智能合約測試?

HardHat是一個以太坊開發環境,它允許開發人員有效地編譯,部署,調試和測試智能合約。它提供了一個被稱為HardHat網絡的本地區塊鏈環境,該環境模仿了Mainnet或Ropsten等真實以太坊網絡的行為,使其非常適合測試。

開發人員更喜歡HardHat的關鍵原因之一是其靈活性和豐富的插件生態系統。無論您是使用摩卡咖啡編寫單元測試,使用Chai進行斷言,還是使用內置工具進行調試, HardHat都會簡化整個智能合約開發生命週期。當您要確保合同邏輯在實時網絡上部署之前,這使其特別有用。

建立您的開發環境

在進行測試之前,必須建立一個適當的環境:

  • 安裝Node.js :確保安裝Node.js (版本14.x或更高版本)和NPM
  • 初始化一個項目:在項目目錄中運行npm init -y以創建一個package.json文件。
  • 安裝HARDHAT :執行npm install --save-dev hardhat以在您的項目中添加HardHat
  • 創建HARDHAT配置文件:運行npx hardhat ,然後選擇“創建JavaScript項目”以生成hardhat.config.js文件。

設置完成後,您可以開始編寫和測試智能合約

寫一份基本的智能合同

為了演示如何使用硬漢進行測試,讓我們考慮一個簡單的堅固合同:

 // contracts/Token.sol pragma solidity ^0.8.0;合同令牌{



mapping(address => uint256) public balances; function transfer(address to, uint256 amount) external { require(balances[msg.sender] >= amount, 'Insufficient balance'); balances[msg.sender] -= amount; balances[to] += amount; } function mint(address account, uint256 amount) external { balances[account] += amount; }

}

該基本令牌合同包括轉移和鑄造令牌的功能。目的是使用Hardhat的測試框架測試這些功能是否在不同方案下的預期表現。

配置測試環境

在編寫測試之前,請確保您的項目結構支持測試:

  • 將您的堅固合同放在contracts/文件夾中。
  • 將測試文件存儲在test/目錄中。
  • 如果需要,更新hardhat.config.js (例如,添加網絡或插件)。

這是一個最小的配置示例:

 // hardhat.config.js module.exports = { solidity: '0.8.0', };

使用此設置,您可以使用MochaChai編寫和執行測試。

使用摩托馬和柴編寫測試

HardHat與流行的JavaScript測試框架Mocha無縫集成,並與斷言庫Chai無縫集成。

首先在test/目錄中創建測試文件:

 // test/token-test.js const { expect } = require('chai');描述(“令牌合同”,函數(){ 讓令牌; 讓Hardhattoken; 讓所有者; 令addr1;



the eacheach(async函數(){

Token = await ethers.getContractFactory('Token'); [owner, addr1] = await ethers.getSigners(); hardhatToken = await Token.deploy(); await hardhatToken.deployed();

});

它(“應將總供應分配給所有者”,異步函數(){

await hardhatToken.mint(owner.address, 100); const ownerBalance = await hardhatToken.balances(owner.address); expect(ownerBalance).to.equal(100);

});

它('應該在帳戶之間傳輸令牌',async函數(){

await hardhatToken.mint(owner.address, 100); await hardhatToken.transfer(addr1.address, 50); const addr1Balance = await hardhatToken.balances(addr1.address); expect(addr1Balance).to.equal(50);

});

它(“如果發送者沒有足夠的令牌,則應該失敗',async函數(){

const initialOwnerBalance = await hardhatToken.balances(owner.address); await expect( hardhatToken.transfer(addr1.address, 1) ).to.be.revertedWith('Insufficient balance'); expect(await hardhatToken.balances(owner.address)).to.equal(initialOwnerBalance);

}); });

每個測試用例都使用來主張預期的結果。 beforeEach鉤可確保每次測試的全新部署,從而防止測試案例之間的干擾。

用硬漢進行測試

一旦編寫了測試,執行它們就很簡單:

  • 在您的項目根目錄中打開終端。
  • 運行命令npx hardhat test

輸出將顯示每個測試的結果,包括通過和失敗情況。如果任何測試失敗, HardHat將顯示詳細的錯誤消息,以幫助快速識別問題。

對於更多顆粒狀控件,您可以通過附加文件路徑來運行特定的測試文件:

 npx hardhat test test/token-test.js

這使您可以專注於特定的合同行為,而無需重新運行整個測試套件。


常見問題

問:我可以不堅固地使用硬漢嗎?是的,儘管HardHat主要是為了固體而設計的,但它也可以與其他EVM兼容語言(例如Vyper)一起使用,儘管社區支持可能會有所不同。

問:如何調試Hardhat的測試失敗?@nomiclabs/hardhat-WaffleHardHat Runtime Environment(HRE)中使用Console.log在測試執行過程中打印可變值。此外,檢查測試輸出中提供的交易收據和還原原因。

問:我可以使用HardHat測試合同升級嗎?是的, HardHat通過@OpenZeppelin/HardHat-Upgrades等插件支持代理模式,從而使您可以在本地模擬和測試可升級的合同。

問:是否還有摩卡和柴的替代方案可以在Hardhat中進行測​​試?儘管摩卡被廣泛採用,但您可以將其他測試框架(例如JEST)與其他配置集成在一起,儘管本機支持和文檔對於摩卡柴ai而言更加成熟。

免責聲明:info@kdj.com

所提供的資訊並非交易建議。 kDJ.com對任何基於本文提供的資訊進行的投資不承擔任何責任。加密貨幣波動性較大,建議您充分研究後謹慎投資!

如果您認為本網站使用的內容侵犯了您的版權,請立即聯絡我們(info@kdj.com),我們將及時刪除。

相關知識

期貨交易中如何使用單向模式與對沖模式?

期貨交易中如何使用單向模式與對沖模式?

2026-02-04 18:19:57

了解單向模式1. 單向模式在任何給定時間為每種資產建立單一頭寸方向(多頭或空頭)。 2. 交易者不能在同一交易品種上持有相反的頭寸,這簡化了保證金計算和風險敞口跟踪。 3. 初始保證金是根據未平倉頭寸的名義價值和所選槓桿水平計算的。 4. 當保證金餘額低於專門與該單一頭寸相關的維持閾值時,就會發生清...

如何從現貨錢包轉賬至期貨賬戶? (即時指南)

如何從現貨錢包轉賬至期貨賬戶? (即時指南)

2026-02-04 18:00:07

了解加密貨幣交易所中的錢包分離1. 現貨錢包和期貨賬戶在大多數中心化交易所中作為獨立的金融容器運行。 2、現貨錢包中持有的資產不能直接用於期貨市場槓桿交易或建倉。 3. 這兩個環境之間的傳輸需要用戶通過指定的界面選項進行顯式啟動。 4. 分離的存在是為了加強風險控制——期貨頭寸帶有槓桿、清算機制和獨...

如何手動或自動平倉加密貨幣合約頭寸?

如何手動或自動平倉加密貨幣合約頭寸?

2026-02-01 23:19:36

手動平倉流程1. 登錄合約處於活動狀態的交易平台,然後導航至“持倉”或“未結訂單”選項卡。 2. 通過檢查合約品種、規模、入場價格和槓桿水平來找到具體合約倉位。 3. 單擊倉位旁邊的“平倉”或“平倉”按鈕——某些界面將其標記為“僅減倉”或“平倉”。 4、在彈出的對話框中確認關閉動作;系統將執行與倉位...

如何理解BitcoinETF對加密合約的影響?

如何理解BitcoinETF對加密合約的影響?

2026-02-01 16:19:51

Bitcoin ETF 和市場流動性1. Bitcoin ETF 將機構資本直接引入現貨市場,增加訂單簿深度並減少大額交易的滑點。 2. 隨著套利者利用期貨和永續掉期對沖 ETF 頭寸,衍生品市場的流動性增強。 3. ETF 的存在與主要加密貨幣交易所的買賣價差收窄相關,尤其是在美國市場交易時段。 ...

在當前流動性激增的情況下,如何交易 DeFi 合約?

在當前流動性激增的情況下,如何交易 DeFi 合約?

2026-02-01 07:00:25

了解 DeFi 協議中的流動性動態1. DeFi 的流動性激增通常是由流動性挖礦激勵、代幣發行和跨鏈橋接活動協調資本流入引發的。 2. 當大型流動性池吸收增加的訂單流時,自動化做市商會經歷暫時的價格滑點壓縮,從而創造短期套利窗口。 3. 流動性深度不對稱的代幣對(例如穩定幣掛鉤資產與波動性治理代幣)...

如何利用社交交易複製加密合約專家?

如何利用社交交易複製加密合約專家?

2026-02-02 07:40:22

了解社交交易平台1. 社交交易平台將實時市場數據與用戶交互功能相結合,使交易者能夠觀察、跟隨和復制其他人開立的頭寸。 2. 這些平台通常需要賬戶驗證、將資金存入穩定幣或原生代幣,並鏈接到支持的加密衍生品交易所。 3. 交易者在選擇跟單對象之前可以訪問公開績效指標,例如勝率、利潤係數、最大回撤和平均交...

期貨交易中如何使用單向模式與對沖模式?

期貨交易中如何使用單向模式與對沖模式?

2026-02-04 18:19:57

了解單向模式1. 單向模式在任何給定時間為每種資產建立單一頭寸方向(多頭或空頭)。 2. 交易者不能在同一交易品種上持有相反的頭寸,這簡化了保證金計算和風險敞口跟踪。 3. 初始保證金是根據未平倉頭寸的名義價值和所選槓桿水平計算的。 4. 當保證金餘額低於專門與該單一頭寸相關的維持閾值時,就會發生清...

如何從現貨錢包轉賬至期貨賬戶? (即時指南)

如何從現貨錢包轉賬至期貨賬戶? (即時指南)

2026-02-04 18:00:07

了解加密貨幣交易所中的錢包分離1. 現貨錢包和期貨賬戶在大多數中心化交易所中作為獨立的金融容器運行。 2、現貨錢包中持有的資產不能直接用於期貨市場槓桿交易或建倉。 3. 這兩個環境之間的傳輸需要用戶通過指定的界面選項進行顯式啟動。 4. 分離的存在是為了加強風險控制——期貨頭寸帶有槓桿、清算機制和獨...

如何手動或自動平倉加密貨幣合約頭寸?

如何手動或自動平倉加密貨幣合約頭寸?

2026-02-01 23:19:36

手動平倉流程1. 登錄合約處於活動狀態的交易平台,然後導航至“持倉”或“未結訂單”選項卡。 2. 通過檢查合約品種、規模、入場價格和槓桿水平來找到具體合約倉位。 3. 單擊倉位旁邊的“平倉”或“平倉”按鈕——某些界面將其標記為“僅減倉”或“平倉”。 4、在彈出的對話框中確認關閉動作;系統將執行與倉位...

如何理解BitcoinETF對加密合約的影響?

如何理解BitcoinETF對加密合約的影響?

2026-02-01 16:19:51

Bitcoin ETF 和市場流動性1. Bitcoin ETF 將機構資本直接引入現貨市場,增加訂單簿深度並減少大額交易的滑點。 2. 隨著套利者利用期貨和永續掉期對沖 ETF 頭寸,衍生品市場的流動性增強。 3. ETF 的存在與主要加密貨幣交易所的買賣價差收窄相關,尤其是在美國市場交易時段。 ...

在當前流動性激增的情況下,如何交易 DeFi 合約?

在當前流動性激增的情況下,如何交易 DeFi 合約?

2026-02-01 07:00:25

了解 DeFi 協議中的流動性動態1. DeFi 的流動性激增通常是由流動性挖礦激勵、代幣發行和跨鏈橋接活動協調資本流入引發的。 2. 當大型流動性池吸收增加的訂單流時,自動化做市商會經歷暫時的價格滑點壓縮,從而創造短期套利窗口。 3. 流動性深度不對稱的代幣對(例如穩定幣掛鉤資產與波動性治理代幣)...

如何利用社交交易複製加密合約專家?

如何利用社交交易複製加密合約專家?

2026-02-02 07:40:22

了解社交交易平台1. 社交交易平台將實時市場數據與用戶交互功能相結合,使交易者能夠觀察、跟隨和復制其他人開立的頭寸。 2. 這些平台通常需要賬戶驗證、將資金存入穩定幣或原生代幣,並鏈接到支持的加密衍生品交易所。 3. 交易者在選擇跟單對象之前可以訪問公開績效指標,例如勝率、利潤係數、最大回撤和平均交...

看所有文章

User not found or password invalid

Your input is correct