我有一个要通过scala模拟进行模拟的类,但是却遇到编译错误。如何纠正此错误或正确指定隐式?
它表示未指定隐式arg。
我尝试遵循scala模拟站点上的指南。我还尝试了不同的方式来指定隐式值。
我在这里创建模拟
val mockUserSessionApiGatewayHandler = mock[UserSessionApiGatewayHandler]
这是方法签名
def userExists[F[+_] : Monad](request: UserNameAndPasswordEvent)(implicit awsProxy: DatabaseProxy[F, UserTable])
我在这里指定了模拟
(mockUserSessionApiGatewayHandler.userExists[IO] (_: UserNameAndPasswordEvent) ( _: DatabaseProxy[IO, UserTable]) )
.expects(testUserNameAndPasswordEvent, *)
.returning(EitherT.rightT[IO, String]("User Does Not Exist"))
这是错误
not enough arguments for method userExists: (implicit evidence$3: cats.Monad[cats.effect.IO], implicit awsProxy: lambdas.database.DatabaseProxy[cats.effect.IO,lambdas.database.UserTable])cats.data.EitherT[cats.effect.IO,String,String].
[error] Unspecified value parameter awsProxy.
[error] (mockUserSessionApiGatewayHandler.userExists[IO] (_: UserNameAndPasswordEvent) ( _: DatabaseProxy[IO, UserTable]) )
[error] ^
[error] one error found
答案 0 :(得分:1)
事实证明,泛型类型是隐式的,因此我需要添加它。
(mockUserSessionApiGatewayHandler.userExists[IO]
(_: UserNameAndPasswordEvent) (_:IO , _: DatabaseProxy[IO, UserTable]) )
.expects(testUserNameAndPasswordEvent, *, *)