Solidity
在 HardHat 中測試時如何更改地址?
我正在嘗試對我使用安全帽和華夫餅等編寫的 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()