0

scala中有没有一种方法可以MockitoSugar用来模拟一个objectscala单例的方法?

4

2 回答 2

7

处理单例进行模拟的最佳选择是首先对单例本身的结构进行一些修改。使用特征来定义操作,然后让对象像这样扩展特征:

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

object Foo extends Fooable

然后,在任何需要该Foo对象的类中,将其声明为输入或可以设置的内容(DI),但将其声明为特征,而不是像这样:

class MyFooUser(foo:Fooable = Foo){

}

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

于 2013-07-17T14:27:55.727 回答
0

Mockito 对objects 没有帮助,但您可以尝试使用ScalaMock代替。

于 2013-07-17T14:35:45.717 回答