在 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
我有一个特征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