在 PlayFramework 的测试期间替换特征的实现?

Replacing implementation of a trait during tests in PlayFramework?

我有一个特征Config,其中包含一堆配置值。

我有这个特征的默认实现,DefaultConfig,其中包含这些字段的生产值。我在 Config 上使用 @ImplementedBy( classOf[DefaultConfig] ),在我的控制器中,它被注入为:

class SignupController @Inject()(cc: ControllerComponents, config: Config)

到目前为止一切正常 - 但我想要另一个 Config 的实现,称为 TestConfig,其中包含测试数据库的凭据等。我想要TestConfig 而不是 DefaultConfig 在测试期间被注入。

知道如何实现吗?我的测试从 PlaySpec with GuiceOneAppPerSuite with Injecting

启动测试应用程序时,您可以覆盖注入的 class:

override lazy val app = new GuiceApplicationBuilder()
      .overrides(bind[Config].to[TestConfig])
      .build