scala - 使用 MockFactory 模拟配置对象

标签 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 = "", 
  companyName="", 
  proxy = ProxyConfig("", 2323)
)

但我觉得对我要处理的每个配置都这样做不太好......

我想创建以下内容:

val someConfig = mock[SomeConfig]

但是当我的代码尝试访问代理属性(这是一个案例类)时,它会失败并出现空指针异常。

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

最佳答案

你可以尝试像这样模拟它:

val someConfig = mock[SomeConfig]
when(someConfig.proxy).thenReturn(ProxyConfig("", 2323))

因此,当您尝试获取 someConfig.proxy 时,它将返回 ProxyConfig("", 2323)

由于known limitation of ScalaMock,上面的代码正在使用Mockito

关于scala - 使用 MockFactory 模拟配置对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50394888/

相关文章:

reflection - Scala 相当于 C# 的 Expression API

scala - Scala Futures如何与flatMap链接在一起?

scalatest "A stack"应该是 "do something"——wtf?字符串的方法应该如何?

unit-testing - 将 future 传递给 whenReady 失败

ScalaMock 与 scalatest

Scalamock:如何获取 "expects"进行代理模拟?

algorithm - 通过多次递归调用将普通递归转换为尾递归

multithreading - 从哪里开始认真的并发(多线程、并行?)编程

scala - Spark 和 Hadoop 测试方法

Scalatest ExecutionContext