2015-06-10 27 views

回答

3

如果您从μtest返回Future,那么如果将来成功,测试将通过,如果未来失败,测试将失败。因此,您可以为未来的某个点安排条件检查而不会阻塞。

我写了一个简单eventually方法,完成此:

package utest 

import rx.ops.DomScheduler 

import scala.concurrent.{Promise, Future} 
import scala.concurrent.duration.FiniteDuration 
import scala.util.{Failure, Success, Try} 

object JsOps { 
    import scala.concurrent.ExecutionContext.Implicits.global 
    val scheduler = new DomScheduler 

    def eventually(eval: => Try[Boolean])(implicit timeout: FiniteDuration): Future[Boolean] = { 
    val p = Promise[Boolean]() 
    scheduler.scheduleOnce(timeout) { 
     eval match { 
     case Success(b) => p.success(b) 
     case Failure(t) => p.failure(t) 
     } 
    } 
    p.future 
    } 
} 

下面是使用的一个示例:

import scala.concurrent.duration._ 
    implicit val timeout = 30.milliseconds 

    eventually { 
    if (/*condition holds true*/) { 
     Success(true) 
    } else Failure(new RuntimeException(/*error message*/)) 
    } 
相关问题