scala - 从 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
}
解决方案
最后,这是我拥有的正确方法。
"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
)
}
推荐阅读
- java - @SendTo Annotation 对于 ActiveMQ 静默失败
- gmail-api - 如何将 Gmail API 访问限制在较小的范围内
- vue.js - 在 Vue.js 中,如何查找哪些数据更改导致组件重新渲染?
- api - 在 Groovy Soap UI 5.4.0 中执行类时出现 java.lang.InstantiationException 错误
- websocket - websocket wss:// 在 https 中给出握手超时错误
- html - 在 CSS 中定位 itemprop
- c# - 使用flee使用字符串文字比较
- c# - 在并行测试运行中访问非静态类中的静态属性
- awk - AWK 在遍历数组时返回重复记录
- php - PHP如何计算二维数组中的重复值?