我正在用 truffle 和 testrpc 创建智能合约。在编写单元测试时,我希望更改块时间以模拟可能调用智能合约的不同时间。如何evm_increaseTime
在松露控制台内设置一套?
问问题
904 次
2 回答
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);
于 2017-09-04T08:57:11.840 回答
-2
解决方案是在solidity 中覆盖now
关键字,将其设置为一个值,然后稍后在应用程序中使用该值(用于测试目的)。
于 2017-04-27T21:40:02.700 回答