如何让虚拟时间在猫效应3的测试中通过?

我正在尝试将Mules转换为 Cats Effect 3 (CE3)。由于它是一个缓存库,在它的测试中它需要(虚拟)时间来测试项目是否会过期。它目前正在大量使用cats.effect.laws.util.TestContext,它允许在不实际睡眠的情况下推进虚拟时钟tickTestContextCE3 中不存在(据我所知),但我总是不愿意将sleep调用放入测试中。IO为这个特定案例滚动我自己的前景是一个令人生畏的前景。当然,这是人们更普遍的问题。但是,我无法TestContext在迁移指南中找到参考。

这种情况是否有已知的升级路径?

回答

从克里斯达文波特一些帮助的不和谐,我发现TestContext仍然存在,但已经移动cats.effect.laws.utilcats.effect.kernel.testkit。它存在于自己的项目和工件中,因此您需要添加一个依赖项(SBT 语法):

    "org.typelevel" %% "cats-effect-kernel-testkit" % catsEffectV % Test,

此外,如果您没有使用laws包中的任何其他内容,那么您将希望删除该依赖项,这将类似于:

    "org.typelevel" %% "cats-effect-laws"           % catsEffectV % Test,

大概这就是他们移动它的原因:因为它不是特定于法律的。


但是,我并没有成功地获得虚拟时间来通过我的测试,并且遗憾地IO.sleep现在用s强制它。:/


以上是如何让虚拟时间在猫效应3的测试中通过?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>