2013-06-05 105 views
2

模擬方法鏈我要嘲笑下面的代碼:使用PowerMock與返回值

int num = MySingelton.getInstance().getA().getB().getC(); 

返回一個僞造的號碼。我該如何使用PowerMock & EasyMock \ Mockito?

回答

1

是可能的。我使用PowerMockito爲您創建了一個示例代碼。

創建一個單獨的類..

public class SingletonClassUtil 
{ 
    private static SingletonClassUtil singletonClassUtil; 

    private SingletonClassUtil(){} 

    private String name; 

    public static SingletonClassUtil getInstance() 
    { 
     if(singletonClassUtil!=null) 
     { 
      singletonClassUtil = new SingletonClassUtil(); 
     } 
     return singletonClassUtil; 
    } 

    public String getA() 
    { 
     return name; 
    } 
} 

現在使用PowerMock測試類..

public class SingletonTest 
{ 
    public void testSingleton() throws Exception 
    { 
     PowerMockito.suppress(PowerMockito.constructor(SingletonClassUtil.class)); 
     PowerMockito.mockStatic(SingletonClassUtil.class); 
     SingletonClassUtil singletonClassUtil = PowerMockito.mock(SingletonClassUtil.class); 

     PowerMockito.when(singletonClassUtil.getA()).thenReturn("A"); 
     System.out.print(singletonClassUtil.getA()); 
     // add your code here to access inner class methods 
    } 
} 

投票我,如果它可以幫助你