Scala 使用MockFactory模拟配置对象

Scala 使用MockFactory模拟配置对象,scala,scalatest,scalamock,Scala,Scalatest,Scalamock,我正在做一些测试,在很多情况下,我有一个FTP/HTTP的配置 我在sbt中使用Scala和以下库: "org.scalatest" %% "scalatest" % "3.0.1" % Test, "org.scalamock" %% "scalamock" % "4.1.0" % Test, 在我的测试中,我将以下代码作为模拟配置的示例: val someConfig = SomeConfig( endpoint = "", user = "", password = ""

我正在做一些测试,在很多情况下,我有一个FTP/HTTP的配置

我在sbt中使用Scala和以下库:

"org.scalatest" %% "scalatest" % "3.0.1" % Test,
"org.scalamock" %% "scalamock" % "4.1.0" % Test,
在我的测试中,我将以下代码作为模拟配置的示例:

val someConfig = SomeConfig(
  endpoint = "", 
  user = "", 
  password = "", 
  companyName="", 
  proxy = ProxyConfig("", 2323)
)
但我觉得对我将要处理的每个配置都这样做是不好的

我想创建以下内容:

val someConfig = mock[SomeConfig]
但是,当我的代码尝试访问代理属性(case类)时,它会失败,并出现空指针异常


我想知道如何模拟包含其他case类的case类,并使我的代码更加清晰,有没有办法用MockFactory做到这一点?

您可以尝试这样模拟它:

val someConfig = mock[SomeConfig]
when(someConfig.proxy).thenReturn(ProxyConfig("", 2323))
因此,当您尝试获取
someConfig.proxy时,它将返回
ProxyConfig(“,2323)


上面的代码使用Mockito,因为case类的参数被转换为
val
字段,而ScalaMock有一个不能模拟
val
的字段,所以我认为不可能直接用ScalaMock来实现这一点


Mockito确实具有此功能。

您是否可以提供sbt/或任何其他配置,以了解该语法应该使用哪些软件包,以及您在特定测试用例中使用的哪些扩展将非常有用。我只看到它适用于某个私有属性的getter,而不适用于与另一个case类嵌套的case类的公共属性。。。可能有点像scala faker可能是一个解决方案,但我希望这可以由mock factory解决……上面的语法来自Mockito。