2014-07-09 26 views
3

如何驗證第二個靜態方法是在使用PowerMock框架的第一個靜態方法中調用的?如何驗證第二個靜態方法是在第一個靜態方法中調用的?

public class A { 
    public static int firstMethod(String s) { 
     return secondMethod(s, 10); 
    } 

    public static int secondMethod(String s, Integer i){ 
     return /*some expression*/; 
    } 
} 

更新:

我還沒有看到尚未使用PowerMock框架的任何解決方案。對於我在linked question中肯定沒有可接受的答案。

UPDATE2:

@Test 
public void test() { 
    PowerMockito.mockStatic(A.class); 
    Mockito.when(A.secondMethod(Mockito.anyString(), Mockito.anyInt())).thenReturn(1000); 
    A.firstMethod("test"); 
    PowerMockito.verifyStatic(); 
} 
+0

呼叫你爲什麼不能模擬/監視第二靜態方法如果你會做同樣的方式只是檢查第一個? –

+0

模擬第二種方法,調用第一種方法,然後驗證... – gontard

+0

但是我怎樣才能確定驗證是驗證第二種靜態方法?我在代碼中添加了代碼。 – barbara

回答

0

我認爲這是一個糟糕的設計。您不應該檢查內部細節,如調用哪些方法。

但話雖如此,爲什麼不確定你的第一個方法在第二個方法被模擬時返回正確的答案呢?

@Test 
public void test() { 
    PowerMockito.mockStatic(A.class); 
    Mockito.when(A.secondMethod(Mockito.anyString(), Mockito.anyInt())).thenReturn(1000); 
    //1000 was returned by your mocked method 
    assertEquals(1000, A.firstMethod("test")); 
    PowerMockito.verifyStatic(); 
} 

這裏假設你的代碼示例是有效的提問,其中firstMethod代表並返回secondMethod

相關問題