我试图弄清楚是否可以使用===样式匹配器来测试Specs2中的期货。请考虑以下事项:
f must be_==("def").await
f === "def"
如果f是Future [String],第一个工作,第二个工作失败,因为(显然)f是未来," def"是一个字符串。我无法找到一种很好的方法来获得===与期货合作的简洁性。我想我可以做等待(f,1秒)===" def",但感觉很蠢。
答案 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传递retries
和timeout
。