Scala Mockito错误`value thenReturn不是Nothing的成员`

问题描述

  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]],但此错误消息非常含糊且无用,因此可能是其他内容

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...