ethereum truffle

ethereum - Miembro igual no está disponible en tipo(biblioteca Assert)



truffle (2)

A partir de ahora, la solidez no admite el retorno de cadenas entre contratos. Debido a que la longitud de una cadena no se conoce en el momento de la llamada. Así que solo soportan arryas de tamaño fijo como bytes32.

Puedes tener múltiples bytes32 para almacenar diferentes partes de tu cadena.

El problema surge cuando quiero probar si un valor de cadena es correcto. Los números se afirman correctamente y no devuelven un mensaje de error cuando se intentan compilar. Sin embargo, cuando intento afirmar una cadena, devuelve el siguiente mensaje de error:

Error: Member "equal" is not available in type(library Assert) outside of storage. Assert.equal(token.symbol(), "$", "The symbol of the token should be $"); ^----------^ Compiliation failed. See above.

Token.sol

pragma solidity ^0.4.8; contract Token { /* The amount of tokens a person will get for 1 ETH */ uint256 public exchangeRate; /* The name of the token */ string public name; /* The address which controls the token */ address public owner; /* The symbol of the token */ string public symbol; /* The balances of all registered addresses */ mapping (address => uint256) balances; /* Token constructor */ function Token(uint256 _exchangeRate, string _name, string _symbol) { exchangeRate = _exchangeRate; name = _name; owner = msg.sender; symbol = _symbol; } function getBalance(address account) returns (uint256 balance) { return balances[account]; } }

TestToken.sol

pragma solidity ^0.4.8; // Framework libraries import "truffle/Assert.sol"; import "truffle/DeployedAddresses.sol"; // Custom libraries and contracts import "../contracts/Token.sol"; contract TestToken { function testExchangeRate() { Token token = new Token(500, "Dollar", "$"); uint256 expected = 500; Assert.equal(token.exchangeRate(), expected, "The exchange rate should be 500 tokens for 1 ETH"); } function testSymbol() { Token token = new Token(500, "Dollar", "$"); Assert.equal(token.symbol(), "$", "The symbol of the token should be $"); } }

¿Por qué sucede y cómo se resuelve?


Intente cambiar el tipo de string a otra, por ejemplo, bytes32 . Funciona.

Todo lo mejor.