es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

akka-stream y mockito: el valor thenReturn no es un miembro de Nothing

Estoy tratando de simular un método que devuelve el tipo:

Future[Option[(ContentType, Long, Source[ByteString, NotUsed])]]

Lo simulo así:

when(service.fetchData(id)).thenReturn(Future.successful(
            Some((ContentTypes.`application/octet-stream`, 1000, Source("Dummy Byte string")))
    )
)

Pero me da un error:

value thenReturn is not a member of Nothing
        when(service.fetchData(id)).thenReturn(Future.successful(

No veo ninguna discrepancia entre el valor de retorno simulado y el tipo de retorno.

¿Qué me falta aquí?

Editar: Lo solucioné con:

val source = Source.single(ByteString("Some dummy string"))
when(service.fetchData(id)).thenReturn(Future.successful(
            Some((ContentTypes.`application/octet-stream`, 1000, source))
    )
)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema aquí es con el tipo Source[ByteString, NotUsed]. Mockito no puede hacer una simulación directamente de este tipo. Por lo tanto, primero necesitamos crear un objeto simulado para él y luego usarlo en el método simulado.

    Una forma de resolver esto es crear un objeto simulado para el tipo Source[ByteString, NotUsed], de la siguiente manera:

    val mockSource = mock[Source[ByteString, NotUsed]]
    

    Luego, podemos usar este objeto simulado para crear el método simulado, de la siguiente manera:

    when(service.fetchData(id)).thenReturn(Future.successful(
        Some((ContentTypes.`application/octet-stream`, 1000, mockSource))
    ))
    

    De esta manera, estamos devolviendo el objeto simulado para el tipo Source[ByteString, NotUsed] cuando se llama al método fetchData().

Comments are closed.