Kor*_*lis 7 verify kotlin mockk
我们在 Java 和 Mockito 中进行了一些测试,我们正在逐步将其转换为 Kotlin 和 Mockk。不过有个问题。这个简单的行:
verify(mockedInteractor).setIndex(1);
当我们将它移动到 mockk 时,我们得到:
verify { mockedInteractor.index = 1 }
这当然通过了测试,因为它实际上并没有检查index是否设置为 1。它只是将模拟的变量设置为 1。下面具有相同的效果。
verify { mockedInteractor.setIndex(1) }
有没有办法验证setter?
Myl*_*ett 11
我想知道这是否是关于 Mockk 的早期版本的问题,毕竟,这是一个老问题。
verify { mockedInteractor.index = 1 }
Run Code Online (Sandbox Code Playgroud)
正如它所说的那样 - 它验证mockedInteractor.index设置为1. 如果你不相信我,就试试吧。尝试设置为产品代码之外mockedInteractor.index的其他内容,然后观察此测试失败。1
也许这是一个 Mockk 错误,现已修复。
您可以尝试捕获:
val fooSlot = slot<String>()
val mockBar = mockk<Bar>()
every { mockBar.foo = capture(fooSlot) } answers { }
assertEquals(fooSlot.captured, "expected")
Run Code Online (Sandbox Code Playgroud)
没有硬编码字符串的紧凑解决方案:
verify { mockedInteractor setProperty MockedInteractor::index.name value 1 }
Run Code Online (Sandbox Code Playgroud)
班级MockedInteractor在哪里mockedInteractor
小智 5
是的你可以:
verify { mockedInteractor setProperty "index" value 1 }
Run Code Online (Sandbox Code Playgroud)
这里有更多示例https://mockk.io/#private-functions-mocking--dynamic-calls
| 归档时间: |
|
| 查看次数: |
2390 次 |
| 最近记录: |