abstract trait MyApi {
def getResult()(implicit ec: ExecutionContext): Future[String]
}
The following doesn't work:
val m = mock[MyApi]
(m.getResult _).expects() returning "..."
It fails with:
java.lang.ClassCastException: org.scalamock.MockFunction1 cannot be cast to org.scalamock.MockFunction0
Note: the example given in http://scalamock.org/user-guide/advanced_topics/ is only useful if the method has at least one argument. So we can't use the solution as in mocking methods which use ClassTag in scala using scalamock
You didn't look at the right example, I guess. Look at example 4 for implicit parameters:
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))
In your case, of course, the non-implicit params are null, so you want:
(m.getResult()(_: ExecutionContext)).expects(*) returning "..."