pragma solidity ^0.4.17;
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/Adoption.sol";
contract TestAdoption {
**Adoption adoption = Adoption(DeployedAddresses.Adoption());**
function testGetAdoptorAddressByPetId() public{
address expected = this;
address[16] memory adoptors = adoption.getAdoptors();
Assert.equal(adoptors[8], expected, "Owner of pet Id 8 should be recorded");
}
}
¿Alguien puede explicar cómo se crea la instancia del contrato a partir de la dirección en el marco de trufa? adopción adopción = adopción (direcciones implementadas. adopción ());
El TestAdoption
marco de prueba de Truffle implementa automáticamente el contrato de prueba, su contrato Adoption
se implementa en los scripts de migración.
Esta línea
Adoption adoption = Adoption(DeployedAddresses.Adoption());
no crea un nuevo contrato sino que asigna a la adoption
variable la dirección implementada por los scripts de migración (las direcciones implementadas se almacenan dentro del DeployedAddresses
contrato)
Para obtener más información sobre la prueba de solidez de la trufa, consulte su documentación .
Santosh Kumar
ismael
DeployedAddresses.Adoption()
devuelve un valor de tipoaddress
, en solidez no puede asignarlo directamente a una variable de tipoAdoption
, debe convertirlo explícitamente. Esto es obligatorio en solidez para evitar errores, como el compilar haciendo una conversión errónea.