有没有办法监视传递给Mockito中Mocked对象的参数

joh*_*doe 2 junit verify mockito

我有一项服务,我正在使用Mockito嘲笑.有什么办法可以验证传递给服务调用的参数.

例如

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

所以从单元测试我想做的事情

verifyThat ("John", emp.getName());
verifyThat ("Doe", emp.getLastName);
Run Code Online (Sandbox Code Playgroud)

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

@InjectMocks
EmployeeAnalyzer employeeAnalyzer;
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Aug*_*sto 10

非也!Mockito太棒了.您可以使用ArgumentCaptor来捕获Employee参数,然后执行一些断言.

(例子来自上一个链接)

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

或者使用@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());
}
Run Code Online (Sandbox Code Playgroud)