scala - ScalaTest:在同一毫秒内将 Instant 视为相等
问题描述
我有一个我序列化为 JSON 的案例类,以及一个检查往返工作的测试案例。
深埋在案例类中的是java.time.Instant
s,我将其放入 JSON 作为它们的纪元毫秒。
事实证明,anInstant
实际上具有纳秒精度,并且在翻译中丢失,导致测试失败,因为时间戳现在稍微偏离。
有没有一种简单的方法可以让 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
}
推荐阅读
- c++ - 计划问题 C++ 窗口
- c# - bing 地图不更新绑定的形状
- plugins - 如何为以前的版本创建一个 grafana 插件
- kubernetes - 如何从 kubernetes 集群内提供的服务访问安装在 kubernetes 集群外的 kafka
- python - 将 2 个字典的值与不匹配的值进行比较
- html - Card content doesn't adjust to screen size at breakpoint
- python - python django中MEDIA_ROOT(媒体文件)和STATIC_ROOT(静态文件)的真正区别以及如何正确使用它们
- python - 函数在python中是如何工作的
- dialogflow-es - 使用 dialogflow-fulfillment 时如何设置会话实体
- ios - 是否可以使用 URL 方案(FaceTime 链接)启动 Group FaceTime 通话?