Извлечь значение из 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
)
}