【发布时间】:2020-12-29 01:08:38
【问题描述】:
我已经实现了一个接口。在那里,我将时间戳作为参数传递给函数。为了获取当前时间,我使用了Instant.now().toString()。
函数如下所示:
fun createId() {
val values = Record(name = "ABC", timestamp = Instant.now().toString())
interface_name.store(values)
}
@Test
fun `test1 for createId`() {
val values = Record(name = "ABC", timestamp = "2020-12-28")
every { interface_name.store(values) } just runs
}
这给了我:Verification failed,因为时间戳不同。我无法弄清楚如何模拟 Instant.now() 以便在测试时获得静态时间戳。任何帮助表示赞赏。
【问题讨论】:
-
将
Clock传递给Instant#now(Clock)。在测试期间,您通过自己的Clock,在正常操作期间,您使用系统默认的Clock。 -
@Slaw 你能详细说明一下吗?我在哪里打发时间?
-
你不能在你的真实代码中使用
Instant.now()。您必须让您的真实代码接受Clock- 例如在你的类的构造函数中——并将其传递给Instant.now()
标签: java unit-testing kotlin timestamp mockk