2016-11-16 16 views
6

Tôi muốn biết ExecutionContext nào tôi nên sử dụng (và tại sao) trên scalatest % 2.2.6 để chạy tương lai của tôi và tương lai của giả.Thực thi ScalatestContext

class Foo { 
    def foo: Future[String] = Future.sucessful("B") 
} 

class Bar(foo: Foo) { 
    def bar: Future[String] = foo.foo() 
} 

class MyTest extends WordSpec { 

    implicit val ec: ExecutionContext = ??? // ...global? Why global? Why not? 

    val myMock = mock[Foo] 
    val myBar = new Bar(myMock) 

    "..." in { 
    (myMock.foo _).expects(*).returning(Future.succesful("A")) 
    whenReady(myBar.bar())(_ shouldBe "A") 
    } 
} 

Trả lời

1

Chỉ cần nhập scala.concurrent.ExecutionContext.Implicits.global và điều này sẽ tải mặc định ExecutionContext for Future objects in test của bạn hoạt động bình thường.

GHI CHÚ: để sử dụng Tương lai trên các thử nghiệm là OK, hàm ý toàn cầu. Đối với các dự án thực tế, hãy xem xét tinh chỉnh ExecutionContext chính xác cho mỗi trường hợp.