如何使用MockitoSugar来模拟对象(单例)方法?

时间:2013-07-17 14:16:16

标签: scala mockito scalatest

scala中有一种方法可以使用MockitoSugar来模拟作为scala单例的object的方法吗?

2 个答案:

答案 0 :(得分:7)

处理单身人士嘲笑的最好办法是首先对单身人士的结构做一点修改。使用特征定义操作,然后使对象扩展特征,如下所示:

trait Fooable{
  def doFoo:String = "foo"
}

object Foo extends Fooable

然后,在任何需要Foo对象的类中,将其声明为输入或可以设置的内容(DI),但将其作为特征进行转换,如下所示:

class MyFooUser(foo:Fooable = Foo){

}

默认情况下它会使用该对象,但在构建测试时,您可以为其设置一个模拟的Fooable。有很多方法可以处理Fooable进入你的类(这是一个),而这并不是这个答案的范围。答案实际上是首先使用特征来定义方法,然后让对象扩展该特征,然后将其称为任何需要它的类中的特征。这将允许你有效地模拟它。

答案 1 :(得分:0)

Mockito对object的帮助不大,但您可以尝试使用ScalaMock