Scalest ExecutionContext

Я хотел бы знать, какой ExecutionContext я должен использовать (и почему) на scalatest % 2.2.6 для запуска моих фьючерсов и фиктивных фьючерсов.

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")
  }
}

person Henrique dos Santos Goulart    schedule 16.11.2016    source источник


Ответы (1)


Просто импортируйте scala.concurrent.ExecutionContext.Implicits.global, и это загрузит ExecutionContext по умолчанию для объектов Future в ваших тестах, чтобы они работали правильно.

ПРИМЕЧАНИЕ. Для использования фьючерсов в тестах допустимы глобальные имплициты. Для реальных проектов рассмотрите возможность использования ExecutionContext в каждом случае.

person Carlos Saltos    schedule 22.01.2018