gpt4 book ai didi

scala - 在 Play 2 测试 + future 中捕获异常

转载 作者:行者123 更新时间:2023-11-28 21:10:57 25 4
gpt4 key购买 nike

如何使用 play 测试在未来的成功中捕获异常?

这是我的代码:

"A Validity" should {
"be created based on Client's Mobile" in new WithApplication {
val objectId = UUIDs.timeBased()
CValidityServiceModule.checkValidity(true, "MOBILE", clientId, objectId)
val future = genericService.findByObjectIdAndByClientId(objectId, clientId)

future.onComplete {
case Success(s) => {
s match {
case Some(v) => {
v.clientId mustEqual clientId
v.objectId mustEqual objectId
}
case None => assert(false)
}
}
case Failure(t) => {
assert(false, t.getMessage)
}
}
}

基本上,如果任何匹配器失败,它就会给我一个异常,但测试是绿色的。

有什么想法吗?

最佳答案

您需要等待 Future 完成后再对其进行测试。使用 onComplete 回调将不起作用,因为测试在 Future 之前完成,并且在不同的上下文中抛出异常。

Await.result 应该为您完成:

import scala.concurrent.Await
import scala.concurrent.duration.Duration
val future = genericService.findByObjectIdAndByClientId(objectId, clientId)
val s = Await.result(future, Duration.Inf)
s match {
case Some(v) => {
v.clientId mustEqual clientId
v.objectId mustEqual objectId
}
case None => assert(false)
}

关于scala - 在 Play 2 测试 + future 中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28330492/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com