【问题标题】:Mockk current time模拟当前时间
【发布时间】:2020-03-27 06:24:20
【问题描述】:

我正在使用MockK 进行单元测试,如果使用当前时间(毫秒)参数调用了某个函数,我想使用verify

在主应用程序中的函数调用:

functionName(System.currentTimeMillis())

但在测试中:

verify(exactly = 1) { 
       functionName(System.currentTimeMillis())  }

不起作用,因为毫秒总是不同的

【问题讨论】:

  • 您可以在调用该函数之前存储时间戳,然后检查该时间是否大约与添加了一些阈值的时间相同。跨度>
  • 好吧,这并不准确 :) 希望应该有匹配器。谢谢
  • 然后在调用函数之前将时间戳存储为任何其他输入参数,然后根据该输入检查输出结果。你不需要嘲笑它,因为你期望functionNameSystem.currentTimeMillis() 做一些事情。
  • 这能回答你的问题吗? Mocking time in Java 8's java.time API

标签: android unit-testing date kotlin mockk


【解决方案1】:

你可以使用 any() 代替。它只是验证函数是否被任何调用 参数类型的参数(在本例中为 Long)

verify(exactly = 1) { 
   functionName(any())
}

【讨论】:

  • Any 不会在经过其他时间而不是当前时间时测试用例。我的主要问题是测试确切的时间是否是当前的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 1970-01-01
  • 1970-01-01
  • 2011-05-25
  • 2019-03-19
  • 2011-11-28
  • 1970-01-01
相关资源
最近更新 更多