我有一些取决于当前时间的测试,到目前为止我无法找到解决方案。我已经尝试了一些模拟库,例如 mock
但它模拟了整个模块并且失败了。
非常感谢任何帮助(如果我只模拟 DateTime.utc_now
一切正常)
注意:测试在很大程度上依赖于其他 DateTime
和 Date
函数,所以模拟整个模块不是一个很好的选择(我也试过这个但由于非常复杂而失败了案例,我在很多测试中都需要这个)
实际测试:
我有两个日期,开始日期
和 结束日期
作为我要测试的函数的输入。在出于测试目的调用该函数之前,我插入了一些与当前周相关的数据(当前数据到接下来的 7 天)。现在该函数将获取当前日期时间并检查特定日期(每条记录将说明它是否适用于一周中的当前日期以及迭代的当前时间段范围 -> 开始和结束日期)。
例如,一条记录适用于 mon
-> 2:12 到 3:13
最佳答案
最适合我需求的解决方案(简单、运行良好且符合上述要求)是:
define your own function/service
MyDateTime.utc_now/0
and mock it in your tests. — Reference.
关于datetime - 如何在 Elixir 中模拟当前时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52802099/