Извлечь значение из AsyncEither - ScalaZ

Я новичок в ScalaZ и в Scala в целом, поэтому я столкнулся с проблемой ниже. Я написал несколько модульных тестов для своего приложения, и мне нужно извлечь значение фактического ответа.

Можете ли вы подсказать, как я могу это сделать?

Expected :PaymentResponse(7bc2dc3b-c347-422f-b204-ccefb22708fa,
                          7bc2dc3b-c347-422f-b204-ccefb22708fa,USD,15.9,PAYMENT_PENDING,Paypal,VISA,None)
Actual   :\/-(EitherT(Future(Success(\/-(PaymentResponse(7bc2dc3b-c347-422f-b204-ccefb22708fa,
               7bc2dc3b-c347-422f-b204-ccefb22708fa,
               USD,15.9,PAYMENT_PENDING,Paypal,VISA,None))))))

Весь тест:

"should return a payment object" in {
  val paymentId = UUID.randomUUID()
  val a: AsyncEither[FinanceGatewayError, PaymentResponse] = paymentService.getPayment(ProfileId("profileId"), paymentId.toString)

  val expectedPaymentResponse = PaymentResponse(
    paymentId = paymentId.toString,
    orderId = paymentId.toString,
    currency = "USD",
    amount = 15.90,
    status = PAYMENT_PENDING,
    paymentMethodLabel = "Paypal",
    paymentMethodIssuer = VISA,
    threeDSecure = None
  )
  \/-(paymentService.getPayment(ProfileId("profileId"), paymentId.toString)) shouldBe expectedPaymentResponse
}

1 ответ

Наконец, это правильный подход, который у меня есть.

"should return a payment object" in {
  val paymentId = UUID.randomUUID()
  val expectedPaymentResponse = PaymentResponse(
    paymentId = paymentId.toString,
    orderId = paymentId.toString,
    currency = "USD",
    amount = 15.90,
    status = PAYMENT_PENDING,
    paymentMethodLabel = "Paypal",
    paymentMethodIssuer = VISA,
    threeDSecure = None
  )
  val paymentResponse: AsyncEither[FinanceGatewayError, PaymentResponse] =
    paymentService.getPayment(ProfileId("profileId"), paymentId.toString)
  Await
    .result(paymentResponse.run, 5 seconds)
    .fold(
      error => fail(s"The test is failed because $error ."),
      payment => payment shouldBe expectedPaymentResponse
    )
}
Другие вопросы по тегам