市值: $2.209T 0.83%
體積(24小時): $68.1929B 8.38%
恐懼與貪婪指數:

38 - 害怕

  • 市值: $2.209T 0.83%
  • 體積(24小時): $68.1929B 8.38%
  • 恐懼與貪婪指數:
  • 市值: $2.209T 0.83%
加密
主題
加密植物
資訊
加密術
影片
頂級加密植物

選擇語言

選擇語言

選擇貨幣

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

如何使用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),我們將及時刪除。

相關知識

交易前如何計算LINK期貨爆倉風險?

交易前如何計算LINK期貨爆倉風險?

2026-07-30 04:39:50

市場波動模式1. Bitcoin的價格走勢通常與美國通膨報告和聯準會利率決策等宏觀經濟指標相關。 2. 在 Bitcoin 主導地位較低的時期,山寨幣估值經常表現出較大的波動,反映出投機行為加劇。 3. 交易所交易基金的批准立即引發流動性激增,特別是在幣安和 Coinbase 等主要中心化平台上。 ...

LINKUSDT永續合約資金費率是多少?

LINKUSDT永續合約資金費率是多少?

2026-07-29 07:40:14

市場波動模式1. Bitcoin 在 ETF 批准公告或重大交易所中斷等高流動性事件期間,24 小時視窗內價格波動通常超過 10%。 2. 當第 2 層匯總升級上線時,以太坊的波動性指數經常飆升,尤其是在部署後的前 72 小時內 Gas 費用減少超過 65% 的情況下。 3. 穩定幣脫鉤事件(例如矽...

AVAX 期貨保證金要求是如何計算的?

AVAX 期貨保證金要求是如何計算的?

2026-07-23 15:40:03

AVAX 期貨保證金結構1. AVAX期貨保證金由兩個不同的部分組成:初始保證金和維持保證金。這些是根據當前市場價格、波動性、未平倉合約和合約規模即時計算的。 2. 初始保證金作為履約保證金,以彌補短期(通常是一個交易時段)內潛在的不利價格變動。它以頭寸名義價值的百分比表示。 3. 維持保證金設定為...

ADA永續合約的最大槓桿是多少?

ADA永續合約的最大槓桿是多少?

2026-07-28 07:40:32

ADA 永續期貨槓桿因交易所而異,取決於司法管轄區、使用者層級和風險管理政策。截至 2026 年 7 月,主要平台實施不同的上限。特定於交易所的 ADA 槓桿限制1.幣安合約對ADA/USDT永續合約採用動態槓桿模型。具有 Tier-1 狀態的經過驗證的用戶可以獲得高達25 倍的槓桿。在 KYC 完...

ADA合約保證金率為何會觸發警告?

ADA合約保證金率為何會觸發警告?

2026-07-22 09:00:26

ADA 合約保證金比率機制1. 各大交易所的ADA永續合約採用根據持倉規模、槓桿水平和當前標記價格即時計算的動態保證金比例。 2. 保證金比率等於(錢包餘額+未實現損益)除以維持保證金要求,以百分比表示。 3. 當該比率低於交易所定義的維持門檻(通常為 5% 至 10%,取決於槓桿率)時,系統將啟動...

如何計算ADA期貨強平價格?

如何計算ADA期貨強平價格?

2026-07-30 09:00:28

了解 ADA 期貨保證金機制1. 主要交易所的ADA期貨合約以逐倉或全倉模式運作,每種模式對強平門檻的影響不同。獨立保證金為每個頭寸分配專用資金,而全倉保證金則從整個錢包餘額中提取。 2. ADA 期貨的初始保證金要求通常在 5% 到 10% 之間,具體取決於槓桿等級和交易政策。較高的槓桿率會增強對...

交易前如何計算LINK期貨爆倉風險?

交易前如何計算LINK期貨爆倉風險?

2026-07-30 04:39:50

市場波動模式1. Bitcoin的價格走勢通常與美國通膨報告和聯準會利率決策等宏觀經濟指標相關。 2. 在 Bitcoin 主導地位較低的時期,山寨幣估值經常表現出較大的波動,反映出投機行為加劇。 3. 交易所交易基金的批准立即引發流動性激增,特別是在幣安和 Coinbase 等主要中心化平台上。 ...

LINKUSDT永續合約資金費率是多少?

LINKUSDT永續合約資金費率是多少?

2026-07-29 07:40:14

市場波動模式1. Bitcoin 在 ETF 批准公告或重大交易所中斷等高流動性事件期間,24 小時視窗內價格波動通常超過 10%。 2. 當第 2 層匯總升級上線時,以太坊的波動性指數經常飆升,尤其是在部署後的前 72 小時內 Gas 費用減少超過 65% 的情況下。 3. 穩定幣脫鉤事件(例如矽...

AVAX 期貨保證金要求是如何計算的?

AVAX 期貨保證金要求是如何計算的?

2026-07-23 15:40:03

AVAX 期貨保證金結構1. AVAX期貨保證金由兩個不同的部分組成:初始保證金和維持保證金。這些是根據當前市場價格、波動性、未平倉合約和合約規模即時計算的。 2. 初始保證金作為履約保證金,以彌補短期(通常是一個交易時段)內潛在的不利價格變動。它以頭寸名義價值的百分比表示。 3. 維持保證金設定為...

ADA永續合約的最大槓桿是多少?

ADA永續合約的最大槓桿是多少?

2026-07-28 07:40:32

ADA 永續期貨槓桿因交易所而異,取決於司法管轄區、使用者層級和風險管理政策。截至 2026 年 7 月,主要平台實施不同的上限。特定於交易所的 ADA 槓桿限制1.幣安合約對ADA/USDT永續合約採用動態槓桿模型。具有 Tier-1 狀態的經過驗證的用戶可以獲得高達25 倍的槓桿。在 KYC 完...

ADA合約保證金率為何會觸發警告?

ADA合約保證金率為何會觸發警告?

2026-07-22 09:00:26

ADA 合約保證金比率機制1. 各大交易所的ADA永續合約採用根據持倉規模、槓桿水平和當前標記價格即時計算的動態保證金比例。 2. 保證金比率等於(錢包餘額+未實現損益)除以維持保證金要求,以百分比表示。 3. 當該比率低於交易所定義的維持門檻(通常為 5% 至 10%,取決於槓桿率)時,系統將啟動...

如何計算ADA期貨強平價格?

如何計算ADA期貨強平價格?

2026-07-30 09:00:28

了解 ADA 期貨保證金機制1. 主要交易所的ADA期貨合約以逐倉或全倉模式運作,每種模式對強平門檻的影響不同。獨立保證金為每個頭寸分配專用資金,而全倉保證金則從整個錢包餘額中提取。 2. ADA 期貨的初始保證金要求通常在 5% 到 10% 之間,具體取決於槓桿等級和交易政策。較高的槓桿率會增強對...

看所有文章

User not found or password invalid

Your input is correct