Specs2,future,await和===

时间:2015-11-18 00:45:08

标签: scala specs2

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

f must be_==("def").await f === "def"

如果f是Future [String],第一个工作,第二个工作失败,因为(显然)f是未来," def"是一个字符串。我无法找到一种很好的方法来获得===与期货合作的简洁性。我想我可以做等待(f,1秒)===" def",但感觉很蠢。

1 个答案:

答案 0 :(得分:1)

你能做的最好的事情是

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"

但是你必须依靠implicits传递retriestimeout