telefono telefonica sirve que para online nombre name llamadas llamada identificador fijo con como bloqueado activar scala mocking callbyname

scala - telefonica - para que sirve name id



¿Cómo burlarse de un argumento de llamada por nombre(como getOrElse) usando ScalaMock? (1)

El truco consiste en utilizar la versión del Product del método onCall , convertir el segundo argumento en () => String y llamarlo:

class CallByNameMockSpec extends Specification with MockFactory { trait ToBeMocked { def getOrElse(arg: Int)(orElse: => String): String } "Mocking functions with call-by-name arguments" should { "work" in { val m = mock[ToBeMocked] (m.getOrElse (_: Int)(_: String)).expects(101, *).onCall(_.productElement(1).asInstanceOf[() => String]()) m.getOrElse(101)("result") must beEqualTo("result") } } }

Me gustaría poder getOrElse un valor de getOrElse método getOrElse para que devuelva lo que se pasa como el orElse llamada por nombre de orElse con ScalaMock

trait ToBeMocked { def getOrElse(arg: Int)(orElse: => String): String }

ScalaMock tiene que ser utilizado debido al currying. Ejecutando esto:

class CallByNameMockSpec extends Specification with MockFactory { trait ToBeMocked { def getOrElse(arg: Int)(orElse: => String): String } "Mocking functions with call-by-name arguments" should { "work" in { val m = mock[ToBeMocked] (m.getOrElse (_: Int)(_: String)).expects(101, *).onCall((x, y) => y) m.getOrElse(101)("result") must beEqualTo("result") } } }

arroja una excepción:

[error] ClassCastException: test.service.CallByNameMockSpec$$anonfun$1$$anonfun$apply$1$$anonfun$apply$3$$anonfun$apply$4 cannot be cast to java.lang.String (CallByNameMockSpec.scala:16)