1

我正在用 truffle 和 testrpc 创建智能合约。在编写单元测试时,我希望更改块时间以模拟可能调用智能合约的不同时间。如何evm_increaseTime在松露控制台内设置一套?

4

2 回答 2

2

以示例扩展 OP 的答案(取自Status

我建议创建一个函数以在正常情况下getTime()返回,并在测试时设置一个可设置的时间。now

SNTPplaceHolder.sol

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

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

我们现在可以使用设置模拟时间await sntPlaceHolderMock.setMockedTime(t);

于 2017-09-04T08:57:11.840 回答
-2

解决方案是在solidity 中覆盖now关键字,将其设置为一个值,然后稍后在应用程序中使用该值(用于测试目的)。

于 2017-04-27T21:40:02.700 回答