Wie teste ich einen Vertrag mit Konstruktionsparametern? Was wäre zum Beispiel, wenn ich den Metacoin-Beispielvertrag leicht modifiziert hätte , um ein einzuschließeninitial_balance
contract MetaCoin {
mapping (address => uint) balances;
function MetaCoin(uint initial_balance) {
balances[tx.origin] = initial_balance;
}
...
Wie ändere ich das Beispiel 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, der truffle test
Runner stellt die Verträge bereit und Metacoin(DeployedAddresses.Metacoin())
erhält den bereitgestellten Vertrag zum Testen. Aber ich sehe keine Möglichkeit, es initial_balance
zu testen.
Es gibt zwei Lösungen.
Erste Lösung : Ändern Sie Ihre Migrationsdatei und fügen Sie hier einen zweiten Parameter hinzu:
deployer.deploy(Contract, initial_balance)
Zweite Lösung : Stellen Sie einfach einen neuen Vertrag in Ihrem Test bereit:
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");
}
mhm