2017-04-11 1 views
1

Ich erstelle intelligente Verträge mit Trüffel und TestrPC. Beim Schreiben von Komponententests möchte ich die Blockzeit ändern, um verschiedene Zeiten zu simulieren, zu denen intelligente Verträge aufgerufen werden können. Wie setzt man evm_increaseTime in Trüffel-Konsole?Wie verwende ich den Parameter `evm_increaseTime` von der Trüffelkonsole?

+0

Einstellung 'evm_increaseTime' von ethereumjs-testrpc verwendet, wird als RPC-Aufruf implementiert. – RFVenter

Antwort

-2

Die Lösung besteht darin, das Schlüsselwort now in Solidität zu überschreiben, es auf einen Wert zu setzen und diesen Wert später in der Anwendung zu verwenden (zu Testzwecken).

+0

Interessiert zu wissen, wie Sie das gemacht haben. Kleiner Codeausschnitt bitte? – mkaj

2

Erweiterung auf die Antwort des OP mit einem Beispiel (Entnommen Status)

Ich schlage vor, eine getTime() Funktion zu schaffen now in normalen Fällen zurückzukehren und einer einstellbaren Zeit bei der Prüfung.

SNTPlaceHolder.sol

/// @notice This function is overriden by the test Mocks. 
function getTime() internal returns (uint256) { 
    return now; 
} 

SNTPlaceHolderMock.sol

uint256 mock_time; 

function SNTPlaceHolderMock(...) 
     SNTPlaceHolder(...) { 
    mock_time = now; 
} 

function getTime() internal returns (uint256) { 
    return mock_time; 
} 

function setMockedTime(uint256 _t) public { 
    mock_time = _t; 
} 

Wir haben jetzt die verspottete Zeit einstellen await sntPlaceHolderMock.setMockedTime(t);

Verwandte Themen