Mockito Scala NullPointerException



我在使用 Mockito 在我的聊天应用程序中工作时遇到问题,我正在尝试模拟一个将用户 ID 作为字符串并返回该用户的所有对话的存储库。我很难摆脱NullPointerException

这是我的存储库特征:

trait UserRepository {
  val getConversations: (String) => Option[Vector[User]]
}

这是我的服务:

class UserService(userRepository: UserRepository){
  private val boolToNumber : (Boolean) => Int = (bool) => ... not useful here
  private val countToBool : (Int) => Boolean = (int) => ... not useful here
  val getParticipations: (String) => Option[Vector[User]] = (name) => {
    userRepository.getConversations(name) match {
    ... some implementation
  }
}

和我的测试

  // init
  val userRepository = mock[UserRepository]
  // setup
  when(userRepository.getConversations("Smith")) thenReturn (
    Some(
      Vector(
        User("Smith", true, true, ConversationKey("Smith", "Smith and O'Connell chatroom")),
        User("Smith", false, true, ConversationKey("Smith", "Smith and O'Connell chatroom"))
      )
    )
  )
  val userService : UserService = new UserService(userRepository)
  // run
  val actual = userService.getParticipations("Smith")
  // verify
  actual mustBe Vector(User("Smith", false, true, ConversationKey("Smith", "Smith and O'Connell chatroom")))

到目前为止我尝试过:

    打印
  • 在测试中的每个操作之后,打印 UserRepository 返回 Mock for UserRepository, hashCode: 1319190020 ,但用户服务没有打印,因此它是抛出 NullPointerException 的人
  • 通过匹配器更改"史密斯"any[String],相同的错误,以及 anyString相同的错误
  • 将字符串包装在名为 StringValue 的类中,相同的错误 Mockito匹配器

val函数更改为def函数。

我不太确定为什么会这样,但是 mockito 是一个 java 库,所以我并不感到惊讶,它不能很好地处理 scala 函数值,而 Def 编译为与 java 方法相同的东西。

相关内容

  • 没有找到相关文章

最新更新