Доступ к одному умному договору, содержащемуся в другом умном договоре, из javascript - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь разработать приложение с Truffle и хочу проверить мой умный контракт.Контракт содержит в себе второй контракт, например:

pragma solidity >=0.4.21 <0.6.0;

contract SubContract {
    uint public foo;

    constructor() public {
        foo = 0;
    }
}

contract MainContract {
    SubContract public contract;

    constructor() public {
        contract = new SubContract();
    }
}

Затем я хочу протестировать этот контракт в Javascript следующим образом:

var MainContract = artifacts.require("./MainContract.sol");

contract("MainContract", function(accounts) {

  it("initializes SubContract contract", function() {
    return MainContract.deployed().then(function(instance) {
      return instance.contract;
    }).then(function(subContractInstance) {
       return subContractInstance.foo();
    }).then(function(foo) {
      assert.equal(foo.toNumber(), 0);
    });
  });
});

Если я попытаюсь запустить этот тесткак он говорит, что не может получить доступ к функции-члену foo() из undefined.Если я изменю его с instance.contract на instance.contract() в тесте, он скажет мне, что функции contract() нет, даже если другие поля доступны через методы получения.Чего мне не хватает здесь, чтобы получить доступ к экземпляру SubContract?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...