gpt4 book ai didi

ScalaTest:在同一毫秒内将 Instants 视为相等

转载 作者:行者123 更新时间:2023-12-01 09:43:43 24 4
gpt4 key购买 nike

我有一个序列化为 JSON 的案例类,以及一个检查往返工作的测试案例。

深埋在案例类中的是java.time.Instant s,我将其放入 JSON 作为它们的纪元毫秒。

原来是 Instant actually has nanosecond precision这在翻译中丢失了,使测试失败,因为现在时间戳稍微偏离了。

有没有一种简单的方法可以让 Scalatest 忽略差异?我只想修复测试,精度损失对于应用程序来说是完全可以接受的。

最佳答案

我们使用 Clock.instant 来知道当前时间而不是 Instant.now 来避免这个问题。所以类的代码应该是这样的

class MyClass(clock: Clock) {
def getResult(): Result = {
Result(clock.instant)
}
}

在测试中,我们模拟 clock.instant 以确保我们检查完全相同的时间。
class MyClassTest {
val customTime = Instant.now
val clock = mock[Clock]
clock.instant() returns customTime

// test
val myClass = new MyClass(clock)
val expectedResult = Result(customTime)
myClass.getResult ==== expectedResult
}

关于ScalaTest:在同一毫秒内将 Instants 视为相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53764994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com