¿Cómo pruebo un contrato que tiene parámetros de construcción? Por ejemplo, ¿qué pasaría si hubiera modificado ligeramente el contrato de ejemplo de metacoin para incluir uninitial_balance
contract MetaCoin {
mapping (address => uint) balances;
function MetaCoin(uint initial_balance) {
balances[tx.origin] = initial_balance;
}
...
¿Cómo modifico el ejemplo TestMetacoin.sol?
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/MetaCoin.sol";
contract TestMetacoin {
function testInitialBalanceUsingDeployedContract() {
MetaCoin meta = MetaCoin(DeployedAddresses.MetaCoin());
uint expected = 10000;
Assert.equal(meta.getBalance(tx.origin), expected, "Owner should have 10000 MetaCoin initially");
}
...
AFAIK, el truffle test
corredor implementa los contratos y Metacoin(DeployedAddresses.Metacoin())
obtiene el contrato implementado para probar. Pero no veo ninguna forma de pasar en el initial_balance
para probarlo.
Hay dos soluciones.
Primera solución : cambie su archivo de migraciones y agregue el segundo parámetro aquí:
deployer.deploy(Contract, initial_balance)
Segunda solución : simplemente implemente un nuevo contrato dentro de su prueba:
contract TestMetacoin {
function testInitialBalanceUsingDeployedContract() {
MetaCoin meta = new MetaCoin(10000);
uint expected = 10000;
Assert.equal(meta.getBalance(tx.origin), expected, "Owner should have 10000 MetaCoin initially");
}
mjhm