Kotlin coroutines usa produce y mockito para burlarse del trabajo de producción

Estoy probando corotines Kotlin en mi aplicación de Android y estoy tratando de hacer la siguiente testing de unidad

@Test fun `When getVenues success calls explore venues net controller and forwards result to listener`() = runBlocking { val near = "Barcelona" val result = buildMockVenues() val producerJob = produce<List<VenueModel>>(coroutineContext) { result.value } whenever(venuesRepository.getVenues(eq(near))) doReturn producerJob // produce corooutine called inside interactor.getVenues(..) interactor.getVenues(near, success, error) // call to real method verify(venuesRepository).getVenues(eq(near)) verify(success).invoke(argThat { value == result.value }) } 

El método interactor es el siguiente

 fun getVenues(near: String, success: Callback<GetVenuesResult>, error: Callback<GetVenuesResult>) = postExecute { repository.getVenues(near).consumeEach { venues -> if (venues.isEmpty()) { error(GetVenuesResult(venues, Throwable("No venues where found"))) } else { success(GetVenuesResult(venues)) } } } 

postExecute{..} es un método en un BaseInteractor que ejecuta la function en el hilo de la interfaz de launch(UI) través de un ejecutor personalizado que utiliza la corutina de launch(UI) biblioteca corotines android de kotlin.

 fun <T> postExecute(uiFun: suspend () -> T) = executor.ui(uiFun) 

Luego, la function repository.getVenues(..) también es una corutina que devuelve ProducerJob utilizando produce(CommonPool) {}

El problema es que parece que la callback de éxito en la function interactora no parece ejecutarse según el

 verify(success).invoke(argThat { value == result.value }) 

Sin embargo, veo al depurar que la ejecución en la function interactor llega a la línea if (venues.isEmpty()) en el consumeEach pero luego desde allí sale y continúa con la testing, obviamente fallando en la verificación para la devolución exitosa.

Soy un poco nuevo en corutinas por lo que cualquier ayuda sería apreciada.