小编sub*_*oid的帖子

你如何模拟将使用地图功能的未来?

我正在尝试对以下的couchbase方法调用进行单元测试,我在SO中找不到满意的样本,所以我想我会发一个问题....

def getUserSession(token: String, ipAddr: String, userAgent: Option[String]): Future[Option[UserSession]] = {
    val query = new Query().setIncludeDocs(true).setLimit(1)
      .setRangeStart(ComplexKey.of(token))
      .setRangeEnd(ComplexKey.of(s"$token\uefff"))
      .setStale(Stale.FALSE)
    bucket.find[UserSession](DOC_NAME, VIEW_BY_TOKEN)(query).map(_.headOption) map {
      userSessionOpt => {
    userSessionOpt filter {
      userSession =>
        (userSession.ipAddr == ipAddr) &&
          (!userAgent.isDefined || !userSession.userAgent.isDefined || userSession.userAgent == userAgent)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

}

所以这是我的尝试,我的单元测试摘录:

  val mockQueryResult = mock[Future[List[UserSession]]]
  val mockUserSessionList = mock[List[UserSession]]
  val mockUserSession = mock[UserSession]

  // This is just my trial and erros
  mockUserSessionList.head returns mockUserSession
  mockUserSessionList(0) returns mockUserSession

  Await.result(mockQueryResult, Duration(60, SECONDS)) returns mockUserSessionList

  mockBucket.find[UserSession](any[String], any[String])(any[Query])(any[Reads[UserSession]], …
Run Code Online (Sandbox Code Playgroud)

scala future mockito couchbase specs2

1
推荐指数
1
解决办法
2767
查看次数

标签 统计

couchbase ×1

future ×1

mockito ×1

scala ×1

specs2 ×1