Доступ к адресам testrpc из тестов на прочность

Я консультирую документы трюфеля о том, как напрямую проверять контракты.

http://truffleframework.com/docs/getting_started/solidity-tests

Я хотел бы выяснить способ ссылки на существующие учетные записи testrpc в моих тестах. Что-то вроде:

pragma solidity ^0.4.11;

import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/BAToken.sol";

contract TestBAToken {
  function testNewBATokenNotFinalized() {
    address companyFundAddress = addresses[1];  // <-- I'd like this to be a predefined testrpc account
    address userFundAddress = addresses[2];
    uint256 startBlock = block.number - 100;
    uint256 endBlock = block.number + 100;
    BAToken ba = new BAToken(companyFundAddress, userFundAddress, startBlock, endBlock);
    Assert.equal(ba.isFinalized, false, "Token sale shouldn't be finalized upon initialization.");
  }
}

Возможно ли это? Если нет, у кого-нибудь есть хорошие рекомендации относительно того, как обращаться к существующим учетным записям во время тестирования?

5 голосов | спросил cayblood 1 J0000006Europe/Moscow 2017, 23:56:23

1 ответ


4

Вы можете напрямую добавлять адреса в контракте на прочность вместо addresses[1] и addresses[2]. Если вы не хотите этого делать, вы можете объявить некоторые переменные в контракте для адресов и инициализировать их как часть конструктора, как показано ниже.

contract TestBAToken {
  address companyFundAddress;
  address userFundAddress;
  function TestBAToken(address address1, address address2) {
    companyFundAddress = address1;
    userFundAddress = address2;
  }
  function testNewBATokenNotFinalized() {
    uint256 startBlock = block.number - 100;
    uint256 endBlock = block.number + 100;
    BAToken ba = new BAToken(companyFundAddress, userFundAddress, startBlock, endBlock);
    Assert.equal(ba.isFinalized, false, "Token sale shouldn't be finalized upon initialization.");
  }
}

Если вы хотите объявить адреса внутри этой функции, а не полный контракт. Вы можете передать их в качестве аргументов для функции testNewBATokenNotFinalized.

Способ реализации зависит от того, как вы хотите, чтобы контракт был и что он должен делать.

ответил yprateek 2 J0000006Europe/Moscow 2017, 06:19:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132