Как получить доступ к контракту (обратиться к его методам и получить 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? Как получить доступ к методам вновь созоданного контракта?


Ответы (0 шт):