如何使用两个不同的依赖注入容器 运行 scalatest 规范?

How to run scalatest specs with two different dependency injection containers?

我有一个包含最大规模规范文件的测试套件。它们都 运行 在我的 DIC 上的内存实现上很好,这是蛋糕模式的实现。

现在我想要 运行 与集成测试相同的测试套件,这意味着内存中的实现将被与数据库对话的集合所取代,github API'与等通信的s

我想重新使用我的测试来防止代码重复,但我很难在 Scala 中解决这个问题,因为我对这种语言还很陌生。

我最终制作了单独的测试套件。稍后我可以将 sbt 配置为仅 运行 这些文件,而不是让它自动搜索文件。

这样做的缺点是每次都需要大量的样板文件来将测试添加到套件中。我希望有人会编辑我的答案以删除样板文件。

class FunctionalTestingSuite extends Suites {
  override val nestedSuites : IndexedSeq[Suite] = {
    //val actorSystem = FunctionalSpec.createActorSystem
    IndexedSeq(

      new CodeRepositorySpec(FunctionalSpec.createActorSystem) with FunctionalTestEnvironmentHelper,

      new PipelineCollectionSpec(FunctionalSpec.createActorSystem) with FunctionalTestEnvironmentHelper,
      new PipelineControllerSpec with FunctionalTestEnvironmentHelper,
      new PipelineSpec(FunctionalSpec.createActorSystem) with FunctionalTestEnvironmentHelper,

      new JobCollectionSpec(FunctionalSpec.createActorSystem) with FunctionalTestEnvironmentHelper,
      new JobControllerSpec with FunctionalTestEnvironmentHelper,
      new JobSpec(FunctionalSpec.createActorSystem) with FunctionalTestEnvironmentHelper
    )
  }
}

依赖注入容器每次都是通过混合一个特征来注入的,在本例中是FunctionalTestEnvironmentHelper。在集成环境中,使用IntegrationTestEnvironmentHelper