捕获参数传递给powermockito中的存根

时间:2014-09-10 10:42:27

标签: java junit mockito powermock stubbing

如何捕获(出于断言目的)传递给静态存根方法调用的参数?

methodBeingStubbed看起来像这样......

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

我正在对方法调用进行存根,因为我需要验证它是否被调用...

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

但我现在也想知道传递给这个“methodBeingStubbed”的属性,并断言它是预期的

1 个答案:

答案 0 :(得分:4)

致电verifyStatic后,您需要实际调用您尝试验证的方法,例如the documentation here

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

此时您可以使用Mockito argument captors,如所示(但未经过测试):

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

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

Properties passedInValue = propertiesCaptor.getValue();

如果您习惯于@Mock注释,或者您需要捕获通用(如List<String>),您可能也有兴趣使用@Captor注释。< / p>