「单元测试」A值在300秒后会变成B,我如何测试这个接口呢?
感谢 @betacat 的提醒,我删掉之前粗糙的例子,举一个具体的场景:
假设我需要对一款策略游戏进行测试。当前资源 15 单位,资源最少经过 300s 才会更新一次,我们按照公式计算,300s 后资源应该是 35 单位。
如果接口的时间取值是从系统时间获取的,我就很难直接伪造。所以请问:我该如何快速的进行测试。
不知道各位大佬有什么好想法。
选答蟹蟹:比较全面的测试类书籍或中长篇教程(不限定语言,对“为什么要写测试”、“好的全面的测试该怎么设计”很迷茫),请推荐
@原罪 老师提供了「观察者模式:测试代码订阅事件主题,真正的执行程序发布事件主题。这种耦合是最低的」的答案,虽然没有解决我「如何快速进行测试」的困惑,但的确很有启发。
因在评论中,就贴上来供大家参考。再次感谢两位回答的大佬 :D。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
首先你要回答为什么是300s后这个value才会变化,业务需求还是后台计算?
为何写测试,你可以去阅读大神Martin Fowler的文章 https://martinfowler.com/arti...
你说的是前端吧?像mocha或者jasmine等框架,在test时都会传入一个done的结束函数。
执行done()即代表测试结束。
注意,如果你没有显性的写done形参,测试框架会立刻结束。如果有写形参,那么你必须执行done()才会结束
泻药。我建议用msg或者ioc隔离开获取时间的操作,然后直接hook msg进行伪造时间的reply,ioc则直接mock一个fake object来返回伪造的时间。