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");
}
}
Kann jemand erklären, wie die Vertragsinstanz aus der Adresse im Truffle Framework erstellt wird? Adoptionsadoption = Adoption(DeployedAddresses.Adoption());
Der Testvertrag TestAdoption
wird automatisch vom Truffle-Testframework bereitgestellt, Ihr Vertrag Adoption
wird in den Migrationsskripten bereitgestellt.
Diese Linie
Adoption adoption = Adoption(DeployedAddresses.Adoption());
erstellt keinen neuen Vertrag, sondern weist der adoption
Variablen stattdessen die von den Migrationsskripten bereitgestellte Adresse zu (die bereitgestellten Adressen werden im DeployedAddresses
Vertrag gespeichert) .
Weitere Informationen zum Trüffel-Festigkeitstest finden Sie in der Dokumentation .
Santosh Kumar
Ismael
DeployedAddresses.Adoption()
gibt einen Wert vom Typ zurückaddress
, in Solidität können Sie ihn nicht direkt einer Variablen vom Typ zuweisen,Adoption
Sie müssen ihn explizit konvertieren. Dies ist zwingend erforderlich, um Fehler zu vermeiden, wie z. B. beim Kompilieren eine fehlerhafte Konvertierung.