2016-05-05 36 views
2

在我的测试类中有很多静态方法,但我只想嘲笑测试类的特定方法。如何在Java类中模拟特定的静态方法?

有什么方法可以让我模拟只有特定的方法和其余的静态方法的行为正常吗?

和如何存根为特定值

假设方法,这是我的方法 PowerMockito.stub(PowerMockito.method(ServiceUtils.class “的getBundle”,String.class))toReturn(束)。

我想让getBundle方法对于通过的不同参数的行为有所不同 例如:String可以是abc或def,因此对于每个字符串,getbundle方法的行为应该不同。

我只是想在PowerMockito.method中代替String.class,而不是像“abc”那样传递值。

回答

2

您可以创建真正对象的间谍。当你使用间谍,那么真正的方法被调用(除非方法被扼杀)。

以下是官方文档中的示例。

List list = new LinkedList(); 
List spy = spy(list); 

//optionally, you can stub out some methods: 
when(spy.size()).thenReturn(100); 

//using the spy calls *real* methods 
spy.add("one"); 
spy.add("two"); 

//prints "one" - the first element of a list 
System.out.println(spy.get(0)); 

//size() method was stubbed - 100 is printed 
System.out.println(spy.size()); 

//optionally, you can verify 
verify(spy).add("one"); 
verify(spy).add("two"); 
0

你可以做这样的事情(如果你使用mokito)

when(mockedList.get(0)).thenReturn("first"); 
相关问题