我有一个正在使用Mockito嘲笑的服务。有什么方法可以验证传递给服务调用的参数?

例如:

我有一个名为employeeAnalyzer.calculateAnnualAppraisalForEmployee(Employee emp)的服务。

所以从单元测试来看,我想做些类似的事情

verifyThat ("John", emp.getName());
verifyThat ("Doe", emp.getLastName);


基本上,我想监视发送到使用该服务注入的参数

@InjectMocks
EmployeeAnalyzer employeeAnalyzer;


提前致谢。

最佳答案

绝对! Mockito很棒。您可以使用ArgumentCaptor捕获Employee参数,然后执行一些声明。

(示例取自上一个链接)

ArgumentCaptor<Person> argument = ArgumentCaptor.forClass(Person.class);
verify(mock).doSomething(argument.capture());
assertEquals("John", argument.getValue().getName());


或使用@Captor注释的新时髦方式

@Captor ArgumentCaptor<AsyncCallback<Foo>> captor;

@Before
public void init(){
   MockitoAnnotations.initMocks(this);
}

@Test public void shouldDoSomethingUseful() {
   //...
   verify(mock).doStuff(captor.capture());
   assertEquals("foo", captor.getValue());
}

08-16 08:54