Как получить доступ к контракту (обратиться к его методам и получить abi), который создайтся из другого контракта во время тестирования в truffle
Имеется следующий котракт CampaignFactory, который создаёт другие контракты на основе контракта Campaign:
pragma solidity >=0.7.0 <0.9.0;
import './Campaign.sol';
contract CampaignFactory {
address[] public deploydCampaigns;
function createCampaign(uint minimum) public {
address newCampaign = address(new Campaign (minimum, msg.sender));
deploydCampaigns.push(newCampaign);
}
function getDeployedCampaigns() public view returns ( address[] memory) {
return deploydCampaigns;
}
}
Для тестирования использую truffle. Код теста в truffle:
const CampaignFactory = artifacts.require('CampaignFactory');
contract('CampaignFactory', () => {
let factory = null;
before(async () => {
factory = await CampaignFactory.deployed();
});
it('Should deploy new contract out of factory', async () => {
const firstCampaign = await factory.createCampaign('10');
await factory.createCampaign('10');
const newContract = await factory.getDeployedCampaigns.call();
console.log(newContract);
});
});
В консоли вижу следующие данные:
{
tx: '0x5afa819542a1e66da2bd97cc85dc49cabc1e05214588eaeb922419b57c0e9691',
receipt: {
transactionHash: '0x5afa819542a1e66da2bd97cc85dc49cabc1e05214588eaeb922419b57c0e9691',
transactionIndex: 0,
blockHash: '0x7332e160a877d01093c09dd724e1693eefc776bc5ae13277bf14b296e4ec57fc',
blockNumber: 35,
from: '0xb4a1ee21b31b689e52f9d6fbc704c368512a9c25',
to: '0x1cb7df05181b8466cde3055ffd437eeb39d76f52',
gasUsed: 729525,
cumulativeGasUsed: 729525,
contractAddress: null,
logs: [],
status: true,
logsBloom: '0x00...',
rawLogs: []
},
logs: []
}
Как протестировать созданные контракты. Могу получить только адрес созданных контрактов. Как получить abi? Как получить доступ к методам вновь созоданного контракта?