Как проверить контракт, сгенерированный другим развернутым контрактом? - PullRequest
1 голос
/ 03 мая 2019

В настоящее время я хочу протестировать контракт с именем B, сгенерированный из другого контракта Registry с использованием трюфеля.Например:

Контракт Registry

pragma solidity >=0.4.17;
import "./B.sol";
contract Registry is Owned {

    function createContract(
        address userAddress) 
        public
        returns(
            bool res
        )
    {
        // create a contract B which the owner is the user.
        B b = new B(userAddress);

        return true;
    }

Контракт B

pragma solidity >=0.4.17;
contract B {
    address private owner;

    constructor (
        address _owner
    ) 
        public
    {
        owner = _owner;
    }

    function logData(
        bytes32 data,
        uint    timestamp
    )
        public
        returns(bool res)
    {
        ...
    }

    ...

сценарий тестирования B.js в трюфеле / ​​тесте:

const Registry = artifacts.require('./Registry.sol');
const B = artifacts.require('./B.sol');

const truffleAssert = require('truffle-assertions');
const assert = require('assert');

contract('Registry', (accounts) => {
  let registry;
  let B;

  beforeEach(async () => {
      // create a reportSummary contract from registry contract. 
      registry = await Registry.deployed();

      // How can I retrieve the contract B's instance?
  });

Поскольку я новичок в твердости, поэтому я не могу найти способ проверить функцию logData или другие функции в контракте B, который зависит от контракта Registry.Есть ли подходящий способ или мне следует изменить оформленный контракт?Благодаря.

1 Ответ

0 голосов
/ 03 мая 2019

Вы можете проверить мой ответ, в котором тоже есть пример доступа к функции из импортированного контракта

Надежность: может ли родительский контракт видеть обновления данных из дочернего контракта?

Чтобы получить доступ к функции через web3, просто используйте экземпляр договора с реестром, и вы можете вызвать функцию договора B

...