...不知道'mock'是否正确。
无论如何,我有一个继承的代码库,我试图为此编写一些基于时间的测试。为了不太含糊,该代码与查看某项的历史并确定该项是否现在具有时间阈值有关。
在某些时候,我还需要测试向该历史记录添加一些内容,并检查阈值现在是否已更改(并且显然正确)。
我遇到的问题是,我正在测试的部分代码使用对time()的调用,因此基于我的事实,我很难确定确切的阈值时间是多少。我不太确切地知道何时会调用time()函数。
所以我的问题基本上是这样的:我是否可以通过某种方式“替代” time()调用,或者以某种方式“模拟”时间,以使测试在“已知时间”内工作?
还是我只需要接受这样一个事实,即我将不得不在正在测试的代码中做某件事,以某种方式允许我在需要时强迫它使用特定的时间?
无论哪种方式,是否都存在开发对时间敏感的,易于测试的功能的“通用做法”?
编辑:我的问题也有一部分是事实,即历史发生的时间会影响阈值。这是我部分问题的一个例子...
想象一下,你有一根香蕉,而当你需要把它吃掉的时候,你正在努力解决。假设它将在3天内失效,除非用某种化学药品喷洒了,在这种情况下,我们从喷涂开始算起将有效期增加了4天。然后,我们可以通过冻结将其再添加3个月,但是如果将其冻结,则融化后只有1天的时间可以使用它。
所有这些规则都是由历史时间决定的。我同意我可以在几秒钟内使用Dominik的测试建议,但是我的历史数据是什么?我是否应该立即“创建”它?
正如您可能无法知道的那样,我仍在尝试掌握所有这种“测试”概念;)