I have below class that has callback.How Can I mockk ResponseReceiver(callback)
class Receiver(private val context: Context) {
val responses: Flow<Response> = callbackFlow {
val callback = object : Server {
override fun broadcast(rsp: Response) {
trySend(rsp)
}
}
val receiver: BroadcastReceiver = ResponseReceiver(callback)
register(receiver)
awaitClose { unregister(receiver) }
}
private fun register(receiver: BroadcastReceiver) =
context.registerReceiver(receiver, IntentFilter(CMD))
private fun unregister(receiver: BroadcastReceiver) = context.unregisterReceiver(receiver)
}
I am trying to test it using mockk but not able to capture or mockk ResponseReceiver(any()) callback value.
@Test
fun given_when_then() = runTest {
// Prepare
every { ResponseReceiver(any()) } answers {
firstArg<Server>().broadcast(mockk())
}
// Act
val testObserver = target.responses.test()
verify { mockContext.registerReceiver(any(), any()) }
testObserver
.assertValue(response)
.finish()
}