Scala确定全局ExecutionContext是否完成了所有任务

时间:2017-05-12 22:34:32

标签: scala executioncontext

我正在为一个异步执行某些非io任务并使用回调的服务编写一些测试。我需要每个测试都等到所有回调都完成。是否有可能确定

scala.concurrent.ExecutionContext.Implicits.global 

完成所有任务?

1 个答案:

答案 0 :(得分:0)

如果你有这样的服务:

class MyService {
  def asyncDouble(i: Int): Future[Int] = Future.successful {
    Thread.sleep(1000)
    i * 2
  }
}

您可以使用ScalaTest进行测试:

import org.scalatest.FunSuite
import org.scalatest.concurrent.ScalaFutures

class MyServiceSpec extends FunSuite with ScalaFutures {

  test("Should double the input") {
    val service = new MyService

    val future = service.asyncDouble(10)

    whenReady(future) { result =>
      assert(result == 20)
    }
  }
}

或者如果你正在玩游戏!应用并使用PlaySpec,然后您可以使用具有Helpers功能的await

import org.scalatestplus.play.PlaySpec
import play.api.test.Helpers._

class MyServiceSpec extends PlaySpec {

  "Should double the input" in {
    val service = new MyService

    val future = service.asyncDouble(10)

    val result = await(future)
    result mustEqual 20
  }
}
相关问题