Макет метода без аргументов, но с неявными параметрами

abstract trait MyApi {

  def getResult()(implicit ec: ExecutionContext): Future[String]

}

Следующее не работает:

val m = mock[MyApi]
(m.getResult _).expects() returning "..."

Это не удается с:

java.lang.ClassCastException: org.scalamock.MockFunction1 cannot be cast to org.scalamock.MockFunction0

Примечание: пример приведен в http://scalamock.org/user-guide/advanced_topics/ полезен только в том случае, если у метода есть хотя бы один аргумент. Таким образом, мы не можем использовать решение, как в методах имитации, которые используют ClassTag в scala с использованием scalamock


person douglaz    schedule 26.05.2015    source источник


Ответы (1)


Вы не тот пример посмотрели, я думаю. Посмотрите на пример 4 для неявных параметров:

class Codec()

trait Memcached {
  def get(key: String)(implicit codec: Codec): Option[Int]
}

val memcachedMock = mock[Memcached]

implicit val codec = new Codec
(memcachedMock.get(_ : String)(_ : Codec)).expects("some_key", *).returning(Some(123))

В вашем случае, конечно, неявные параметры равны нулю, поэтому вы хотите:

(m.getResult()(_: ExecutionContext)).expects(*) returning "..."
person Ed Staub    schedule 26.05.2015
comment
Решение: (m.getResult()(_: ExecutionContext)).expects(*) return..., если вы обновите свой ответ, я приму его. - person douglaz; 27.05.2015