Scalatest 执行上下文环境

10

我想知道在 scalatest % 2.2.6 上运行我的 futures 和模拟 futures 时应该使用哪个 ExecutionContext(以及为什么)。

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")
  }
}
1个回答

7

只需导入scala.concurrent.ExecutionContext.Implicits.global,这将加载默认的ExecutionContext,以使您测试中的Future对象正常工作。

注意:在测试中使用全局隐式是可以的。对于真实项目,请考虑为每种情况使用ExecutionContext


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接