如何使用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)
}
}
}基本上,如果任何匹配失败,它会给我一个例外,但测试是绿色的。
有什么想法吗?
发布于 2015-02-04 20:16:03
在测试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)
}https://stackoverflow.com/questions/28330492
复制相似问题