我试图弄清楚是否可以使用===风格的匹配器来测试Specs2的未来。请考虑以下几点:
f must be_==("def").await f === "def"
如果f是一个FutureString,那么第二个就会失败,因为(很明显)f是一个未来,而"def“是一个字符串。我找不到一个很好的方法来使===的简洁与未来工作。我想我可以等待(f,1秒) === "def",但这感觉很恶心。
发布于 2015-11-18 02:42:28
你能做的就是
f.map(_ === "def").await
f.map(_ === "def").await(retries = 1, timeout = 1.seconds)否则,您必须为期货定义自己的===运算符,如下所示
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。
https://stackoverflow.com/questions/33769872
复制相似问题