Solidity

在 HardHat 中測試時如何更改地址?

  • May 27, 2022

我正在嘗試對我使用安全帽和華夫餅等編寫的 Solidity 合約進行一些相當全面的測試。我想做的一件事是在測試時使用各種地址進行鑄幣。如果我去混音,我可以很容易地在哪個地址之間切換。例如,這允許我從多個 Remix 地址創建或嘗試更改配置設置。但是我們如何在安全帽測試腳本中做到這一點?與合約的每次互動總是來自我設置的第一個地址:

const [owner, addr2, addr3] = await ethers.getSigners();

我想偶爾為我的測試更改它 - 以使用 addr2.address 作為範例。必須有一種方法,我只是不知道實現它的語法。是否可以在測試腳本中與合約對話的地址之間切換? - 感謝您的幫助!

文件

如果您需要從預設帳戶以外的帳戶發送交易,可以使用 Ethers.js 提供的 connect() 方法。

await greeter.connect(addr1).setGreeting("Hallo, Erde!");

為了獲得地址 account1.address 你應該使用:

const [owner, addr1, addr2] = await ethers.getSigners();

你需要插入

.connect(<different signer>)

例如

const xyzContractFactory = await ethers.getContractFactory('xyz')
const xyzContract = await xyzContractFactory.deploy()
await xyzContract.deployed()

const [owner, addr2, addr3] = await ethers.getSigners();

await xyzContract.connect(addr1).mint()
await xyzContract.connect(addr2).mint()

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