2014-09-10 27 views
3

我如何捕獲(爲了聲明的目的)傳遞給靜態存根方法調用的參數?捕獲參數傳遞給存根powermockito

的methodBeingStubbed看起來像這樣...

public class SomeStaticClass{ 
protected static String methodBeingStubbed(Properties props){ 
... 

我磕碰方法調用,因爲我需要驗證它被調用......

PowerMockito.stub(PowerMockito.method(SomeStaticClass.class, "methodBeingStubbed")).toReturn(null); 
PowerMockito.verifyStatic(); 

但我現在也想要知道傳遞給此「methodBeingStubbed」的屬性並聲明它與預期一致

回答

4

在致verifyStatic之後,您需要實際調用meth OD你試圖覈實,如the documentation here

PowerMockito.verifyStatic(); 
Static.thirdStaticMethod(Mockito.anyInt()); 

在這一點上,你可以使用的Mockito argument captors,爲證明(但沒有測試):

ArgumentCaptor<Properties> propertiesCaptor = 
    ArgumentCaptor.forClass(Properties.class); 

PowerMockito.verifyStatic(); 
SomeStaticClass.methodBeingStubbed(propertiesCaptor.capture()); 

Properties passedInValue = propertiesCaptor.getValue(); 

如果你已經習慣了@Mock註釋,或者您需要捕獲一個通用(如List<String>),您可能也有興趣使用@Captor註釋。

+0

謝謝傑夫。這裏有趣的(並且有些反直覺的)事情是,不像在設置邏輯測試之前設置模擬/存根,設置捕獲的代碼隨後發生。 – 2014-09-12 10:27:40