使用 mockk 验证构造函数 lambda
Verify constructor lambda using mockk
我想验证 lambda 调用的调用次数。
此 lambda 用作传递状态更改的回调。我想限制 lambda 只能通过构造函数使用。
当 lambda 在构造函数参数中时,有什么方法可以测试它吗?
尝试了以下方法,但这似乎不起作用。
class SampleTest {
private lateinit var sut: Sample
@Test
fun `test lambda is called`() {
val captureCallback = slot<(String) -> Unit>()
every {
sut = Sample(capture(captureCallback))
} answers {
captureCallback.captured("")
}
verify(exactly = 1) {
captureCallback.captured("")
}
}
}
class Sample(val onClick: (String) -> Unit) {
init {
triggerLambda()
}
private fun triggerLambda() {
onClick("")
}
}
如果有人还在看这里我就是这样解决的
class SampleTest {
private val callback: (String) -> Unit = mockk(relaxed = true)
@Test
fun `test lambda is called`() {
Sample(callback)
verify(exactly = 1) { callback.invoke("") }
}
}
我想验证 lambda 调用的调用次数。
此 lambda 用作传递状态更改的回调。我想限制 lambda 只能通过构造函数使用。
当 lambda 在构造函数参数中时,有什么方法可以测试它吗?
尝试了以下方法,但这似乎不起作用。
class SampleTest {
private lateinit var sut: Sample
@Test
fun `test lambda is called`() {
val captureCallback = slot<(String) -> Unit>()
every {
sut = Sample(capture(captureCallback))
} answers {
captureCallback.captured("")
}
verify(exactly = 1) {
captureCallback.captured("")
}
}
}
class Sample(val onClick: (String) -> Unit) {
init {
triggerLambda()
}
private fun triggerLambda() {
onClick("")
}
}
如果有人还在看这里我就是这样解决的
class SampleTest {
private val callback: (String) -> Unit = mockk(relaxed = true)
@Test
fun `test lambda is called`() {
Sample(callback)
verify(exactly = 1) { callback.invoke("") }
}
}