Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 规格2,未来,等待和===_Scala_Specs2 - Fatal编程技术网

Scala 规格2,未来,等待和===

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 =

我试图弄清楚是否可以使用===样式匹配器来测试Specs2中的未来。考虑以下事项:

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"
但是,您必须依靠隐式来通过
重试
超时