Scalamock 3 で Java インターフェースをモックするのに問題があります。AWS で describeInstances を実行しようとしています。この呼び出しには、チュートリアルで説明した方法でモックした EC2 クライアントが必要です。エラーが発生します:
Error:(20, 42) type mismatch;
found : com.amazonaws.services.ec2.model.DescribeInstancesRequest
required: org.scalamock.function.FunctionAdapter0[Boolean]
(client.describeInstances _).expects(request).returning(result.withNextToken("1").withReservations(res1))
^
Java インターフェースのために何か特別なことをする必要がありますか?
package example
import com.amazonaws.services.ec2.AmazonEC2
import com.amazonaws.services.ec2.model.{ Instance, Reservation, DescribeInstancesRequest, DescribeInstancesResult }
import org.scalatest._
import org.scalamock.scalatest.MockFactory
class ApiSpec extends FunSpec with MockFactory {
describe("getInstances") {
val client = mock[AmazonEC2]
val request = new DescribeInstancesRequest
val result = new DescribeInstancesResult
val instance1 = (new Instance).withInstanceId("i-000")
val instance2 = (new Instance).withInstanceId("i-000")
val res1 = (new Reservation).withInstances(instance1)
val res2 = (new Reservation).withInstances(instance2)
(client.describeInstances _).expects(request).returning(result.withNextToken("1").withReservations(res1))
(client.describeInstances _).expects(request.withNextToken("1")).returning(result.withReservations(res2))
}
}