市值: $2.6616T 2.09%
體積(24小時): $78.8372B -10.97%
恐懼與貪婪指數:

64 - 貪婪

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

選擇語言

選擇語言

選擇貨幣

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

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

相關知識

如何查看SOL期貨成交量和持倉量?

如何查看SOL期貨成交量和持倉量?

2026-09-14 00:40:03

存取 SOL 期貨市場數據1. 前往SOL永續合約或季度合約上市的官方交易平台,例如Bybit、OKX或Bitget。 2. 找到SOL/USDT或SOL/USD期貨交易對頁面,切換到「合約概覽」或「市場資料」標籤。 3. 識別標記為「交易量(24 小時)」和「未平倉合約」的即時字段,這兩個字段通常...

如何查看XRP期貨交易量和持倉量?

如何查看XRP期貨交易量和持倉量?

2026-09-15 05:00:12

存取即時 XRP 期貨數據1. 造訪列出 XRP 永續合約和季度期貨合約的主要衍生性商品交易所,包括 Binance、Bybit、OKX 和 Bitget。 2. 導覽至XRP/USDT或XRP/USD交易對頁面,找到即時顯示交易量和持倉量資料的市場深度面板。 3. 確認顯示的持倉量是否反映了多頭/...

如何查看DOGE期貨成交量及持倉量?

如何查看DOGE期貨成交量及持倉量?

2026-09-12 08:39:38

了解 DOGE 期貨交易量1. 期貨交易量是指在特定時間範圍內交易的DOGE份期貨合約的總數,通常以每天或每小時計算。 2. 高成交量通常表示市場參與度較高,並且可以顯示潛在的趨勢延續或逆轉,這取決於價格走勢背景。 3. 交易者監控交易量高峰以及突破或崩潰,以評估合法性-交易量上升支持的持續價格變動...

如何查看ETH期貨交易量及持倉量?

如何查看ETH期貨交易量及持倉量?

2026-09-16 19:00:18

存取即時 ETH 期貨數據1. Binance、Bybit和OKX等主要中心化交易所提供即時儀表板,顯示ETH永續和季度期貨交易量和持股。這些指標每 5-10 秒更新一次,無需登入其公開市場頁面即可存取。 2. Glassnode、CryptoQuant 和 Coinglass 等鏈上分析平台可以跨...

如何查看BTC期貨交易量及持倉量?

如何查看BTC期貨交易量及持倉量?

2026-09-12 15:19:55

BTC期貨指標的資料來源1. CoinGlass API v4 提供 30 多個交易所的即時融資利率、清算熱圖和精細的未平倉合約細分。 2. 幣安期貨 API 提供買賣深度、合約特定交易量歷史記錄和保證金比率快照的本機存取。 3. OKX 資料入口網站提供可下載的 CSV 檔案,其中包含每日結算價格...

如何看懂DOGEUSDT永續合約圖表?

如何看懂DOGEUSDT永續合約圖表?

2026-09-11 19:19:48

了解 DOGEUSDT 永續圖表上的價格走勢1. 蠟燭圖的形成揭示了直接的市場情緒-綠色蠟燭表示買盤占主導地位,而紅色蠟燭則反映該區間內的拋售壓力。 2. 實體上方和下方的燈芯訊號拒絕更高或更低的價格;在波動較大的迷因幣市場中,長上影線通常會先於短期反轉。 3. 接近關鍵水平的連續小實體蠟燭表明在突...

如何查看SOL期貨成交量和持倉量?

如何查看SOL期貨成交量和持倉量?

2026-09-14 00:40:03

存取 SOL 期貨市場數據1. 前往SOL永續合約或季度合約上市的官方交易平台,例如Bybit、OKX或Bitget。 2. 找到SOL/USDT或SOL/USD期貨交易對頁面,切換到「合約概覽」或「市場資料」標籤。 3. 識別標記為「交易量(24 小時)」和「未平倉合約」的即時字段,這兩個字段通常...

如何查看XRP期貨交易量和持倉量?

如何查看XRP期貨交易量和持倉量?

2026-09-15 05:00:12

存取即時 XRP 期貨數據1. 造訪列出 XRP 永續合約和季度期貨合約的主要衍生性商品交易所,包括 Binance、Bybit、OKX 和 Bitget。 2. 導覽至XRP/USDT或XRP/USD交易對頁面,找到即時顯示交易量和持倉量資料的市場深度面板。 3. 確認顯示的持倉量是否反映了多頭/...

如何查看DOGE期貨成交量及持倉量?

如何查看DOGE期貨成交量及持倉量?

2026-09-12 08:39:38

了解 DOGE 期貨交易量1. 期貨交易量是指在特定時間範圍內交易的DOGE份期貨合約的總數,通常以每天或每小時計算。 2. 高成交量通常表示市場參與度較高,並且可以顯示潛在的趨勢延續或逆轉,這取決於價格走勢背景。 3. 交易者監控交易量高峰以及突破或崩潰,以評估合法性-交易量上升支持的持續價格變動...

如何查看ETH期貨交易量及持倉量?

如何查看ETH期貨交易量及持倉量?

2026-09-16 19:00:18

存取即時 ETH 期貨數據1. Binance、Bybit和OKX等主要中心化交易所提供即時儀表板,顯示ETH永續和季度期貨交易量和持股。這些指標每 5-10 秒更新一次,無需登入其公開市場頁面即可存取。 2. Glassnode、CryptoQuant 和 Coinglass 等鏈上分析平台可以跨...

如何查看BTC期貨交易量及持倉量?

如何查看BTC期貨交易量及持倉量?

2026-09-12 15:19:55

BTC期貨指標的資料來源1. CoinGlass API v4 提供 30 多個交易所的即時融資利率、清算熱圖和精細的未平倉合約細分。 2. 幣安期貨 API 提供買賣深度、合約特定交易量歷史記錄和保證金比率快照的本機存取。 3. OKX 資料入口網站提供可下載的 CSV 檔案,其中包含每日結算價格...

如何看懂DOGEUSDT永續合約圖表?

如何看懂DOGEUSDT永續合約圖表?

2026-09-11 19:19:48

了解 DOGEUSDT 永續圖表上的價格走勢1. 蠟燭圖的形成揭示了直接的市場情緒-綠色蠟燭表示買盤占主導地位,而紅色蠟燭則反映該區間內的拋售壓力。 2. 實體上方和下方的燈芯訊號拒絕更高或更低的價格;在波動較大的迷因幣市場中,長上影線通常會先於短期反轉。 3. 接近關鍵水平的連續小實體蠟燭表明在突...

看所有文章

User not found or password invalid

Your input is correct