Specs2、未来、等待和===
Specs2, future, await and ===
我正在尝试弄清楚是否可以使用 === 样式匹配器来测试 Specs2 中的 futures。考虑以下因素:
f must be_==("def").await
f === "def"
如果 f 是 Future[String],第一个有效,第二个失败,因为(显然)f 是一个 future 而 "def" 是一个字符串。我找不到一个很好的方法来使 === 与期货一起工作的简洁性。我想我可以做 Await(f, 1 second) === "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"
但是你必须依靠隐式来传递retries
和timeout
。
我正在尝试弄清楚是否可以使用 === 样式匹配器来测试 Specs2 中的 futures。考虑以下因素:
f must be_==("def").await
f === "def"
如果 f 是 Future[String],第一个有效,第二个失败,因为(显然)f 是一个 future 而 "def" 是一个字符串。我找不到一个很好的方法来使 === 与期货一起工作的简洁性。我想我可以做 Await(f, 1 second) === "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"
但是你必须依靠隐式来传递retries
和timeout
。