ScalaMock:通过懒惰的val初始化模拟特征

时间:2017-11-03 16:18:25

标签: scala unit-testing mocking traits scalamock

我想要嘲笑以下特征:

val mockTraitA = mock[TraitA]

使用ScalaMock时,我尝试

java.lang.NullPointerException

它以{{1}}失败,因为由于私有懒惰的存在而无法正确初始化此特征的模拟版本?

初始化这种特质的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

对于mockTraitA,当特征的构造函数运行时,将执行行internalObject.setSomeVal...。不幸的是,没有办法阻止这种情况。

如果可以,请尝试重构:

private lazy val internalObject = {
  val t = new ServiceA
  t.setSomeVal("someVal")
  t.setSomeOtherval("someOtherVal")
  t
}