【问题标题】:How do I prevent a guice module from being used?如何防止使用 guice 模块?
【发布时间】:2018-11-22 12:39:43
【问题描述】:

如何防止 Guice 在测试中配置此模块?

class SnsModule extends AbstractModule {
  override def configure(): Unit = {
    val snsClient: AmazonSNSAsyncClient = AmazonSNSAsyncClientBuilder.standard().build().asInstanceOf[AmazonSNSAsyncClient]
    bind(classOf[AmazonSNSAsyncClient]).toInstance(snsClient)
  }
}

我尝试覆盖模块:

  private val snsModule = new AbstractModule{
    override def configure(): Unit = {
      val snsClient: AmazonSNSAsyncClient = mock[AmazonSNSAsyncClient]
      bind(classOf[AmazonSNSAsyncClient]).toInstance(snsClient)
    }
  }

  override implicit lazy val app: Application = GuiceApplicationBuilder().overrides(new TestJwkModule(),  snsModule).build()

但是SnsModule 中的configure() 仍然被调用,这是一个问题,因为在我的测试环境中,AmazonSNSAsyncClientBuilder 抛出了一个异常。

【问题讨论】:

    标签: playframework guice


    【解决方案1】:

    disable 阻止模块被加载,例如:

    override implicit lazy val app: Application = GuiceApplicationBuilder().
       disable(classOf[SnsModule])
       overrides(snsModule).build()
    

    【讨论】:

      猜你喜欢
      • 2011-10-30
      • 1970-01-01
      • 2021-07-14
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-10
      相关资源
      最近更新 更多