Ich konsultiere die Dokumente von Truffle, um zu erfahren, wie Verträge direkt in Solidität getestet werden können.
http://truffleframework.com/docs/getting_started/solidity-tests
Ich würde gerne einen Weg finden, in meinen Tests auf bestehende testrpc-Konten zu verweisen. Etwas wie:
pragma solidity ^0.4.11;
import "truffle/Assert.sol";
import "truffle/DeployedAddresses.sol";
import "../contracts/BAToken.sol";
contract TestBAToken {
function testNewBATokenNotFinalized() {
address companyFundAddress = addresses[1]; // <-- I'd like this to be a predefined testrpc account
address userFundAddress = addresses[2];
uint256 startBlock = block.number - 100;
uint256 endBlock = block.number + 100;
BAToken ba = new BAToken(companyFundAddress, userFundAddress, startBlock, endBlock);
Assert.equal(ba.isFinalized, false, "Token sale shouldn't be finalized upon initialization.");
}
}
Ist das möglich? Wenn nicht, hat jemand gute Empfehlungen, wie man während des Testens auf vorhandene Konten verweisen kann?
addresses[1]
Sie können die Adressen anstelle von und direkt in den Soliditätsvertrag einfügen addresses[2]
. Wenn Sie das nicht möchten, können Sie einige Variablen im Vertrag für die Adressen deklarieren und sie wie unten gezeigt als Teil des Konstruktors initialisieren.
contract TestBAToken {
address companyFundAddress;
address userFundAddress;
function TestBAToken(address address1, address address2) {
companyFundAddress = address1;
userFundAddress = address2;
}
function testNewBATokenNotFinalized() {
uint256 startBlock = block.number - 100;
uint256 endBlock = block.number + 100;
BAToken ba = new BAToken(companyFundAddress, userFundAddress, startBlock, endBlock);
Assert.equal(ba.isFinalized, false, "Token sale shouldn't be finalized upon initialization.");
}
}
Wenn Sie möchten, dass die Adressen nur innerhalb dieser Funktion deklariert werden, anstatt den vollständigen Vertrag. Sie können sie als Argumente für die testNewBATokenNotFinalized
Funktion übergeben.
Die Art und Weise der Umsetzung hängt davon ab, wie der Vertrag aussehen soll und was er leisten soll.
kayblut
joifsi
kayblut
joifsi