【问题标题】:How to mock fields of inner singleton objects?如何模拟内部单例对象的字段?
【发布时间】:2018-02-03 01:12:45
【问题描述】:

给定以下代码sn-p

class Config {
  private val conf = ConfigFactory.load()

  object Http {
    val host = conf.getString("http.host")
    val port = conf.getInt("http.port")
  }
}

如何模拟内部单例对象Httphostport 字段?

【问题讨论】:

    标签: scala mockito inner-classes scalatest mockito-scala


    【解决方案1】:

    mockito-scala 通过IdiomaticMockito 提供ReturnsDeepStubs

    import org.mockito.stubbing.ReturnsDeepStubs
    import org.mockito.{ArgumentMatchersSugar, IdiomaticMockito}
    
    val config = mock[Config](ReturnsDeepStubs)
    config.Http.host returns "www.example.com"
    config.Http.port returns 80
    

    没有深度存根我们可以做到

    import org.scalatest.mockito.MockitoSugar
    import org.mockito.Mockito.when    
    
    val config = mock[Config]
    val httpConfig = mock[config.Http.type]
    when(httpConfig.host).thenReturn("www.example.com")
    when(httpConfig.port).thenReturn(80)
    when(config.Http).thenReturn(httpConfig)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多