Solidity

使用 Mocha 測試 Solidity 智能合約時如何創建更多測試賬戶?

  • February 11, 2019

預設只創建 10 個測試賬戶,使用 Mocha 測試智能合約時如何創建更多?

我假設 Mocha 以某種方式創建了一個 testRPC 實例,必須有一種方法來修改該設置。

我假設 Mocha 以某種方式創建了一個 testRPC 實例……

不,是您需要在執行 Mocha 測試之前執行 Ganache(以前稱為 TestRPC)。

在這個通用設置中,Ganache 程序作為伺服器執行,而您的 Mocha 測試作為客戶端執行。

它們之間的通信協議通常是 Web3(通過 HTTP 或 WebSocket)。

這是一個如何啟動 Ganache 程序的範例,該程序初始化 15 個帳戶,每個帳戶使用 1 個乙太幣:

ganache-cli
   --port=8545
   --gasPrice=0x1
   --gasLimit=0x1fffffffffffff
   --account=0x0000000000000000000000000000000000000000000000000000000000000001,1000000000000000000
   --account=0x0000000000000000000000000000000000000000000000000000000000000002,1000000000000000000
   --account=0x0000000000000000000000000000000000000000000000000000000000000003,1000000000000000000
   --account=0x0000000000000000000000000000000000000000000000000000000000000004,1000000000000000000
   --account=0x0000000000000000000000000000000000000000000000000000000000000005,1000000000000000000
   --account=0x0000000000000000000000000000000000000000000000000000000000000006,1000000000000000000
   --account=0x0000000000000000000000000000000000000000000000000000000000000007,1000000000000000000
   --account=0x0000000000000000000000000000000000000000000000000000000000000008,1000000000000000000
   --account=0x0000000000000000000000000000000000000000000000000000000000000009,1000000000000000000
   --account=0x000000000000000000000000000000000000000000000000000000000000000A,1000000000000000000
   --account=0x000000000000000000000000000000000000000000000000000000000000000B,1000000000000000000
   --account=0x000000000000000000000000000000000000000000000000000000000000000C,1000000000000000000
   --account=0x000000000000000000000000000000000000000000000000000000000000000D,1000000000000000000
   --account=0x000000000000000000000000000000000000000000000000000000000000000E,1000000000000000000
   --account=0x000000000000000000000000000000000000000000000000000000000000000F,1000000000000000000

你在這裡看到的是這些賬戶的私鑰,Ganache 會在啟動時列印它們的公共地址。

請注意,與真正的乙太坊節點(如 Parity 或 Geth)相比,Ganache 使所有這些帳戶都處於解鎖狀態,因此您可以輕鬆執行測試,而無需使用發送時使用的帳戶的私鑰對每筆交易進行簽名。

因此,當您嘗試在真正的乙太坊節點上執行測試時,您的測試將不會執行 - 您必須先解鎖帳戶(強烈不推薦),或者至少在每次交易之前(也不推薦),或者使用您發送它的帳戶的私鑰。

如果您使用 Ganache 進行測試,它可以讓您擁有多達 100 個帳戶。點擊配置按鈕,然後點擊帳戶和密鑰。

引用自:https://ethereum.stackexchange.com/questions/48821