【发布时间】:2020-09-01 14:53:51
【问题描述】:
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])
}
}
【问题讨论】:
-
我不确定这是如何编译的。 Future[Good[List[User]]] 与 Future[List[User]]] 的类型不同。尝试编写此模拟时,您应该会遇到编译错误。也许如果你把整个测试代码放上去,就更容易看到到底发生了什么。
标签: scala unit-testing mockito actor