Solidity

如何測試首先需要先前部署的合約地址的合約?

  • May 13, 2019

我的契約的 JS 測試遇到問題,該契約首先取決於另一個契約的部署。

需要部署Contract A ,然後將其地址傳遞給****Contract B

我已經能夠成功遷移,但仍在嘗試通過測試。

如何修復我的 JS 測試並正確實例化/部署?

這是我的測試程式碼:

beforeEach(async function() {
       let tx = await ContractA.deployed();
       contractB = await ContractB.deployed(tx.address);
   });

部署腳本:

module.exports = function(deployer) {
   deployer.deploy(ContractA).then(function() {
       deployer.deploy(ContractB, ContractA.address);
   });
};

收到此錯誤:

Error: ContractB has not been deployed to detected network (network/artifact mismatch)

ContractA部署腳本中有什麼?我認為您需要實例化合約的地址。

嘗試:

module.exports = function(deployer) {
   deployer.deploy(ContractA).then(function(contractA) {
       deployer.deploy(ContractB, contractA.address);
   });
};

( ContractA=> contractA)

你不想要 tx.address。採用:

deployer.deploy(contractA).then(function(){
   deployer.deploy(contractB, contractA.address)});

確保 contractB 在其初始化函式中使用 contractA 的地址。讓我知道這是否有效,從我一直在從事的松露項目中獲取…

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