嵌套映射的奇怪行为

时间:2017-04-22 00:37:13

标签: scala

我有一个嵌套的方法,在其中执行几个动作,并且我得到一些奇怪的行为。

这是方法:

 def performAction(request: RequestModel): Future[ResponseModel] = {
// addToDb returns a Future[ObjectId]
    myService1.addToDb(request.user, request.time) flatMap {
      case objID: ObjectId =>
// doSomething returning ResponseModel
        myService2.doSomething(request) map {
// SuccessModel is extending ResponseModel
          case successData: SuccessModel =>
            successData
// FailureModel is extending ResponseModel
          case failureData: FailureModel =>
            myService1.removeFromDb(objID)
            failureData
        }
      case _ => throw new Exception("future failed")
    }
  }

在我的测试中,我对所有内部服务调用进行了模拟,以控制返回数据。

我想测试我得到FailureModel

的情况

奇怪的是,如果我尝试在myService2.doSomething之前调试objId没问题,但如果我之后调试它,让我们说myService1.removeFromDb objId将等于返回类型(FailureModel)。 ..为什么?

我可以在调试器objId = FailureModel(x,y,z)

中逐字地看到

现在我知道了,因为映射objId的映射是其他东西,但从未在调试器中看到它,这样做有意义吗?

0 个答案:

没有答案