У меня возникли проблемы с моими тестами JS для контракта, которые зависят от развертывания другого контракта в первую очередь.
Контракт A необходимо развернуть, а затем передать его адрес контракту 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 в своей функции инициализации. Дайте мне знать, если это сработает, взял это из проекта трюфелей, над которым я работал...
Если вы хотите использовать контракты, автоматически развертываемые тестовым набором, почему бы просто не получить их следующим образом:
beforeEach(async function() {
let contractA = await ContractA.deployed();
let contractB = await ContractB.deployed();
});
Если развертывание прошло успешно, то это должно сработать. Или вы можете проигнорировать этот контракт и повторно развернуть их в тесте, если у вас есть причина.
Кочевник