Scala 规格2,未来,等待和===
我试图弄清楚是否可以使用===样式匹配器来测试Specs2中的未来。考虑以下事项:Scala 规格2,未来,等待和===,scala,specs2,Scala,Specs2,我试图弄清楚是否可以使用===样式匹配器来测试Specs2中的未来。考虑以下事项: f必须为\==“def”)。等待 f==“定义” 如果f是未来的[String],第一个有效,第二个失败,因为(显然)f是未来的,而“def”是字符串。我找不到一个好方法来获得===处理期货的简洁性。我想我可以等待(f,1秒)=“def”,但那感觉很恶心。你能做的就是 f.map(_ === "def").await f.map(_ === "def").await(retries = 1, timeout =
f必须为\==“def”)。等待
f==“定义”
如果f是未来的[String],第一个有效,第二个失败,因为(显然)f是未来的,而“def”是字符串。我找不到一个好方法来获得===处理期货的简洁性。我想我可以等待(f,1秒)=“def”,但那感觉很恶心。你能做的就是
f.map(_ === "def").await
f.map(_ === "def").await(retries = 1, timeout = 1.seconds)
否则,您必须为Futures定义自己的==
操作符,例如
implicit class FutureOp[T](f: Future[T]) {
def ===>(other: T)(implicit retries: Int = 1,
timeout: Duration = 1.second): Result =
f.map(_ === other).await(retries, timeout)
}
Future("def") ===> "def"
但是,您必须依靠隐式来通过重试
和超时