Estoy en el proceso de aprender Scala y hoy me sentí seguro de presentarlo en uno de nuestros proyectos.¿Qué intenta Scala decirme y cómo soluciono esto? [required: java.util.List [? 0] where type? 0]
La aplicación hace muchas cosas de JPA/Hibernate y comencé a implementar una de las interfaces de Java en Scala. Todo fue bien, hasta que intenté traducir algún código de prueba de unidad a Scala.
Hago un gran uso de Easymock, el código es bastante auto explicativo. Supongo que el problema es que Scala no me permite devolver un java.util.List mecanografiado en el que espera un tipo no escrito. Lamentablemente, no tengo idea de cómo hacer que Scala emita algo que espere que los parámetros de tipo sean algo sin él.
de código que muestra/reproduce mi problema:
package some.package.name
import java.util.ArrayList
import java.util.List
import javax.persistence.Query
import org.easymock.EasyMock._
import org.junit.Assert._
import org.junit.Test
class MyGreatScalaTest {
@Test
def testSomething() : Unit = {
val mockQuery: Query = createMock(classOf[Query])
val mockResult: List[String] = new ArrayList[String]
mockResult.add("great value")
expect(mockQuery.getResultList).andReturn(mockResult)
replay(mockQuery)
assertEquals(
(mockQuery.getResultList.asInstanceOf[List[String]]).get(0),
"great value")
verify(mockQuery)
}
}
que produce el siguiente error de compilación:
[WARNING] found : java.util.List[String]
[WARNING] required: java.util.List[?0] where type ?0
[WARNING] expect(mockQuery.getResultList).andReturn(mockResult)
[WARNING] ^
Como se puede ver que necesito la maqueta para implementar la interfaz de javax.persistence.Query, que devuelve una java.util.List.
declaran Quizás 'mockResult: Lista [_]' en lugar, y desatar las últimas 'asInstanceOf' en? –