2016-05-05 33 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"); 
相關問題