市值: $3.8772T 0.480%
體積(24小時): $122.8603B -44.940%
恐懼與貪婪指數:

64 - 貪婪

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

選擇語言

選擇語言

選擇貨幣

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

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

Hardhat是一個以太坊開發環境,它可以用摩卡和柴等工具來簡化智能合同測試,從而確保可靠的部署。

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

相關知識

為什麼我的Bitstamp期貨位置被清算?

為什麼我的Bitstamp期貨位置被清算?

2025-07-23 11:08:15

了解Bitstamp上的未來清算BitStamp上的期貨交易涉及借貸資金以打開槓桿頭寸,從而擴大了潛在的利益和風險。當您的保證金餘額低於所需的維護閾值時,BitStamp會啟動清算過程以支付借入的金額。之所以發生這種情況,是因為交換充當貸方,如果您的職位價值對您不利,您發布的抵押品將不足以確保貸款。...

BitStamp是否提供倒數合同?

BitStamp是否提供倒數合同?

2025-07-23 13:28:52

了解加密貨幣交易中的倒數合同在加密貨幣衍生產品領域,逆同是一種特定類型的期貨或永久合同,在基本的加密貨幣(例如BTC或ETH)中,而不是在Stablecoins或Fiat貨幣中,定居點和抵押品在基本的加密貨幣中被劃分為。這意味著,當交易者在反向合同中開設職位時,他們的利潤和損失(p&L)將在基本資產...

BitStamp上的期貨和永久性有什麼區別?

BitStamp上的期貨和永久性有什麼區別?

2025-07-27 05:08:19

了解Bitstamp上的期貨合約BitStamp上的期貨合約是財務衍生品,允許交易者以預定的價格和日期推測加密貨幣的未來價格,例如Bitcoin或以太坊。這些合同的到期日期是固定的,這意味著它們將來會在特定的一天定居。當期貨合同到期時,該職位將自動關閉,並根據入口價格和結算價格之間的差額解決損益。這...

如何找到您的Bitstamp Futures貿易歷史?

如何找到您的Bitstamp Futures貿易歷史?

2025-07-23 08:07:56

了解Bitstamp和未來交易的可用性從Bitstamp服務產品的當前狀態開始,至關重要的是要澄清BitStamp不支持期貨交易。該平台主要用作現貨加密貨幣交換,使用戶可以以當前市場價格購買,出售和交易數字資產,例如Bitcoin,以太坊和其他主要加密貨幣。在BitStamp上沒有期貨合同意味著用戶...

我可以在Bitstamp Futures上使用尾隨的停靠站嗎?

我可以在Bitstamp Futures上使用尾隨的停靠站嗎?

2025-07-23 13:42:32

了解加密貨幣交易中的尾聲停止尾隨的停止是一種動態的停止訂單,隨著資產的價格朝著有利的方向移動,可以自動調整。與標準停止損失固定在設定的價格水平上不同,落後的停止遵循指定百分比或美元金額。這使交易者可以鎖定利潤,同時仍提供價格波動的空間。當價格逆轉並達到落後的停車水平時,該訂單會觸發市場銷售(或購買,...

我可以在Bitstamp Futures上使用尾隨的停靠站嗎?

我可以在Bitstamp Futures上使用尾隨的停靠站嗎?

2025-07-25 02:28:47

了解加密貨幣期貨交易中的尾聲停止尾隨的停止是一種動態的停止失敗訂單,隨著市場價格朝著有利的方向移動而自動調整。與標準停止損失(以設定的價格保持固定)不同,尾隨停止遵循資產的價格以定義的百分比或美元距離。這種機制使交易者能夠鎖定利潤,同時仍為交易增長的空間。在期貨交易的背景下,在槓桿率增加損益的情況下...

為什麼我的Bitstamp期貨位置被清算?

為什麼我的Bitstamp期貨位置被清算?

2025-07-23 11:08:15

了解Bitstamp上的未來清算BitStamp上的期貨交易涉及借貸資金以打開槓桿頭寸,從而擴大了潛在的利益和風險。當您的保證金餘額低於所需的維護閾值時,BitStamp會啟動清算過程以支付借入的金額。之所以發生這種情況,是因為交換充當貸方,如果您的職位價值對您不利,您發布的抵押品將不足以確保貸款。...

BitStamp是否提供倒數合同?

BitStamp是否提供倒數合同?

2025-07-23 13:28:52

了解加密貨幣交易中的倒數合同在加密貨幣衍生產品領域,逆同是一種特定類型的期貨或永久合同,在基本的加密貨幣(例如BTC或ETH)中,而不是在Stablecoins或Fiat貨幣中,定居點和抵押品在基本的加密貨幣中被劃分為。這意味著,當交易者在反向合同中開設職位時,他們的利潤和損失(p&L)將在基本資產...

BitStamp上的期貨和永久性有什麼區別?

BitStamp上的期貨和永久性有什麼區別?

2025-07-27 05:08:19

了解Bitstamp上的期貨合約BitStamp上的期貨合約是財務衍生品,允許交易者以預定的價格和日期推測加密貨幣的未來價格,例如Bitcoin或以太坊。這些合同的到期日期是固定的,這意味著它們將來會在特定的一天定居。當期貨合同到期時,該職位將自動關閉,並根據入口價格和結算價格之間的差額解決損益。這...

如何找到您的Bitstamp Futures貿易歷史?

如何找到您的Bitstamp Futures貿易歷史?

2025-07-23 08:07:56

了解Bitstamp和未來交易的可用性從Bitstamp服務產品的當前狀態開始,至關重要的是要澄清BitStamp不支持期貨交易。該平台主要用作現貨加密貨幣交換,使用戶可以以當前市場價格購買,出售和交易數字資產,例如Bitcoin,以太坊和其他主要加密貨幣。在BitStamp上沒有期貨合同意味著用戶...

我可以在Bitstamp Futures上使用尾隨的停靠站嗎?

我可以在Bitstamp Futures上使用尾隨的停靠站嗎?

2025-07-23 13:42:32

了解加密貨幣交易中的尾聲停止尾隨的停止是一種動態的停止訂單,隨著資產的價格朝著有利的方向移動,可以自動調整。與標準停止損失固定在設定的價格水平上不同,落後的停止遵循指定百分比或美元金額。這使交易者可以鎖定利潤,同時仍提供價格波動的空間。當價格逆轉並達到落後的停車水平時,該訂單會觸發市場銷售(或購買,...

我可以在Bitstamp Futures上使用尾隨的停靠站嗎?

我可以在Bitstamp Futures上使用尾隨的停靠站嗎?

2025-07-25 02:28:47

了解加密貨幣期貨交易中的尾聲停止尾隨的停止是一種動態的停止失敗訂單,隨著市場價格朝著有利的方向移動而自動調整。與標準停止損失(以設定的價格保持固定)不同,尾隨停止遵循資產的價格以定義的百分比或美元距離。這種機制使交易者能夠鎖定利潤,同時仍為交易增長的空間。在期貨交易的背景下,在槓桿率增加損益的情況下...

看所有文章

User not found or password invalid

Your input is correct