模拟在另一个对象内创建的对象

时间:2014-03-26 08:20:28

标签: unit-testing junit mockito

我尝试使用JUnit和Mocktio为类创建UnitTest。 在这个类中,有一些来自单例的方法的调用,比如

Singleton.getInstance().doSomething(value);

我知道值的类型。 (构造函数中没有参数或处理单例引用的任何方法) 是否有可能嘲笑Singleton?我的第一个想法只是调用Mockito.mock(Singleton.class)并将其作为参数传递,但后来我必须更改此类以接受单例作为参数 - 这对我来说没有意义。

(我同意这可能是一个设计缺陷,但目前我无法重构该单身人士的使用)。

1 个答案:

答案 0 :(得分:1)

这里的问题是Mockito不允许模拟静态方法(getInstance)。但是,JMockitPowermock都允许这样做。

使用Mockito的另一个选项可能取决于getInstance中的代码。如果这是检查/返回字段,您可以使用反射将该字段分配给模拟实例。