Truffle:高效自動化智能合約開發的利器,本文聚焦智能合約測試。
智能合約測試是高質量智能合約開發的核心環節。 為什麼需要如此重視測試?因為智能合約處理的是價值,有時是巨額價值,這使得它們成為攻擊者的目標。 您可不想看到您的項目最終淪為區塊鏈墓地裡的“幽靈”吧?
關鍵要點:
入門指南:
我們將創建一個名為 HashMarket 的簡單基於智能合約的二手商品市場。
在終端中,定位到您要構建項目的文件夾。在該文件夾中,運行以下命令:
mkdir HashMarket cd HashMarket truffle init
您應該看到類似以下輸出:
<code>Downloading... Unpacking... Setting up... Unbox successful. Sweet! Commands: Compile: truffle compile Migrate: truffle migrate Test contracts: truffle test</code>
您還會得到如下所示的文件結構:
<code>. ├── contracts │ └── Migrations.sol ├── migrations │ └── 1_initial_migration.js ├── test ├── truffle-config.js └── truffle.js</code>
關於這些文件,請參考之前的文章。簡而言之,我們擁有基本的 truffle.js
文件以及用於進行初始區塊鏈遷移的兩個文件。
最簡單的測試方法是在本地網絡上進行。強烈建議使用 ganache-cli(以前稱為 TestRPC)工具進行合約測試。
安裝 ganache-cli(需要 Node 包管理器):
npm install -g ganache-cli
之後,打開一個單獨的終端窗口或標籤頁並運行:
ganache-cli
您應該看到類似以下輸出:
<code>Ganache CLI v6.1.0 (ganache-core: 2.1.0) ... (账户和私钥信息) ... Listening on localhost:8545</code>
這是 ganache-cli 為您創建的所有賬戶的列表。您可以使用任何您想要的賬戶,但這些賬戶將預加載以太幣,這使得它們非常有用(因為測試需要以太幣來支付 gas 費用)。
之後,轉到您的 truffle.js
或 truffle-config.js
文件,並向您的配置中添加一個開發網絡:
module.exports = { networks: { development: { host: "127.0.0.1", port: 8545, network_id: "*" } } };
首先,我們將編寫 HashMarket 智能合約。我們將盡量保持其簡單性,同時保留所需的功能。
HashMarket 是區塊鏈上的 eBay。它允許賣家發布產品,買家使用以太幣購買產品。它還允許賣家在產品未售出時將其移除。
在項目中的 contracts
文件夾中,創建一個新文件並將其命名為 HashMarket.sol
。在該文件中,添加以下代碼:(此處省略了與原文相同的合約代碼,避免重複)
您需要編寫一個遷移文件,讓 Truffle 知道如何將您的合約部署到區塊鏈。進入 migrations
文件夾,創建一個名為 2_deploy_contracts.js
的新文件。在該文件中,添加以下代碼:(此處省略了與原文相同的遷移文件代碼,避免重複)
您可以使用 Solidity 或 JavaScript 進行智能合約測試。 Solidity 在測試智能合約時可能更直觀一些,但 JavaScript 提供了更多可能性。
為了開始測試,在項目中的 test
文件夾中,創建一個名為 TestHashMarket.sol
的文件。 (此處省略了與原文相同的Solidity測試代碼,避免重複)
Truffle 允許我們使用 JavaScript 進行測試,利用 Mocha 測試框架。 (此處省略了與原文相同的JavaScript測試代碼,避免重複)
關於使用 Truffle 測試智能合約的常見問題解答 (FAQ): (此處省略了與原文相同的FAQ部分,避免重複)
以上是松露:測試智能合約的詳細內容。更多資訊請關注PHP中文網其他相關文章!