2013-02-08 31 views
19

我有一个方法:Mockito。验证方法参数去是paticular类

void putObject(<T extends BaseEntity> param) 

有一些测试,我嘲笑这个方法,但我不知道,如何验证方法调用特定类的参数?试图做它在这样的方法:

verify(foo).putObject((SomeClass)anyObject()); 
------ 
verify(foo).putObject(any(SomeClass.class)); 
------ 
ArgumentCaptor<SomeClass> parameter = ArgumentCaptor 
      .forClass(SomeClass.class); 
verify(foo).putObject(parametr); 

仅工作了第二个变体与any(),但它不t check class of parameter`。那么如果有可能验证该方法获得特定类的任何对象?

回答

44

用户匹配器documentationisA()方法。

public static <T> T isA(java.lang.Class<T> clazz)

,将解决你的问题。

verify(foo).putObject(any(),isA(SomeClass.class));

+2

嗨。我想更正上面列出的代码。正确调用是:验证(富).putObject(ISA(SomeClass.class)); – nndru 2017-08-08 11:26:11

1

其实你可以检查与ArgumentCaptor。

ArgumentCaptor<SomeClass> parameterCaptor = ArgumentCaptor 
      .forClass(SomeClass.class); 
verify(foo).putObject(parameterCaptor.capture()); 

SomeClass instance = parameterCaptor.getValue(); 
// check intance.getX() 
// check instance.getY()