我正在与松露和testrpc建立智能合约。在编写单元测试时,我希望更改块时间,以模拟可以调用智能合约的不同时间。如何在松露控制台内设置evm_increaseTime
?
答案 0 :(得分:2)
通过示例扩展OP的答案(取自Status)
我建议创建一个getTime()
函数,以便在正常情况下返回now
,并在测试时返回可设置的时间。
/// @notice This function is overriden by the test Mocks.
function getTime() internal returns (uint256) {
return now;
}
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;
}
我们现在可以使用await sntPlaceHolderMock.setMockedTime(t);
答案 1 :(得分:-2)
解决方案是覆盖now
关键字的可靠性,将其设置为值,然后在应用程序中稍后使用该值(用于测试目的)。