问题描述
val users = List(User(name = "A"))
val userRepoMock = mock[UserRepo]
"GET /users" should {
"return the users" in {
when(userRepoMock.get()).thenReturn(Future.successful(Good(users)))
运行测试时,它无法编译
value thenReturn is not a member of nothing
[error] L55:
when(userRepoMock.get()).thenReturn(Future.successful(Good(users)))
[error] L55:
请问有人可以帮助我解决此问题吗? 预先感谢
这是UserRepo的定义
trait UserRepo {
def get(): Future[List[User]]
}
object UserRepo {
class ActorImpl @Inject()(actor: UserSyncActor.Ref) extends UserRepo {
override def get(): Future[List[User]] = {
implicit val timeout: Timeout = 10.seconds
actor.ref.ask(UserSyncActor.GetUsers).mapTo[List[User]]
}
}
}
我还在模块中将UserRepo及其ActorImpl链接了
class ActorsModule extends AbstractModule {
...
override def configure(): Unit = {
val _ = bind(classOf[UserRepo]).to(classOf[UserRepo.ActorImpl])
}
}
解决方法
我最近遇到了一个类似的问题,对我来说,问题是我在 thenReturn()
中返回的类型与我模拟的函数应该返回的类型不同。
在您的情况下,我会仔细检查 Future.successful(Good(users))
是否为 Future[List[User]]
,但此错误消息非常含糊且无用,因此可能是其他内容