1

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()
}
Pause
  • 33
  • 9

0 Answers0