2017-04-11 1 views
1

Je crée des contrats intelligents avec truffle et testrpc. Lorsque j'écris des tests unitaires, je souhaite changer le temps de blocage pour simuler différentes fois que des contrats intelligents peuvent être appelés. Comment définir evm_increaseTime à l'intérieur de la console de la truffe?Comment utiliser le paramètre testrpc `evm_increaseTime` de la console truffle?

+0

Réglage 'evm_increaseTime' de ethereumjs-testrpc est implémenté comme un appel RPC. – RFVenter

Répondre

-2

La solution consiste à remplacer le mot-clé now par solidité, en le définissant sur une valeur, puis en utilisant cette valeur ultérieurement dans l'application (à des fins de test).

+0

Intéressé de savoir comment vous avez fait cela. Petit extrait de code s'il vous plaît? – mkaj

2

expansion sur la réponse OP par un exemple (Tiré de Status)

Je suggère la création d'une fonction getTime() pour revenir now dans les cas normaux et un temps réglable lors du test.

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; 
} 

Nous pouvons maintenant régler l'heure raillé à l'aide await sntPlaceHolderMock.setMockedTime(t);