首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我怎样才能嘲笑坚实测试的时间呢?

我怎样才能嘲笑坚实测试的时间呢?
EN

Ethereum用户
提问于 2017-04-27 18:07:51
回答 3查看 3.3K关注 0票数 5

我的合同有一个到期日期,我想要单元测试,但我不知道如何去做。如果我能嘲笑合同的时间那就太棒了。不过,谷歌搜索并没有提供任何信息。

EN

回答 3

Ethereum用户

回答已采纳

发布于 2017-04-29 17:00:53

作为一种通用的测试方法,您可以创建另一个只用于调试的合同,合同从生产合同中降下来。第二个合同可以有方法来执行任何事情--例如,将到期日期设置为now

如果您想具体地处理时间,TestRPC有一个快速转发时间的RPC方法。请注意,您必须以某种方式将它集成到您的测试工具中,因为web3并不随它而来。

票数 3
EN

Ethereum用户

发布于 2021-07-20 09:18:26

这是一个相当老的问题,但我想我应该补充一下,对于那些寻找:

您可以使用evm_increaseTime方法,这是通过硬帽子和加纳赫获得的。

下面是以太的一个例子

代码语言:javascript
复制
await ethers.provider.send("evm_increaseTime", [10]) // add 10 seconds
await ethers.provider.send("evm_mine", []) // force mine the next block

这里还有web3

代码语言:javascript
复制
web3.currentProvider.send({jsonrpc: "2.0", method: "evm_increaseTime", params: [10], id: 0})
web3.currentProvider.send({jsonrpc: "2.0", method: "evm_mine", params: [], id: 0})
票数 5
EN

Ethereum用户

发布于 2017-04-29 16:27:08

我一直在使我的合同从一个具有currTime()函数和testing布尔值的简单契约中派生出来。如果我将testing设置为true,currTime()将返回一个假时间,我可以使用addDays(uint days)之类的函数来操作这个时间。如果testing为false,则currTime()只返回block.timestamp。在我检查时间戳的每一个地方,我都打电话给currTime()

票数 4
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/15596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档