有没有办法监视传递给 Mockito 中的 Mocked 对象的参数
Is there a way to spy on parameters passed to a Mocked object in Mockito
我有一个正在使用 Mockito 模拟的服务。有什么方法可以验证传递给服务调用的参数吗?
例如:
我有一个名为 employeeAnalyzer.calculateAnnualAppraisalForEmployee(Employee emp)
的服务。
所以从单元测试我想做一些类似的事情
verifyThat ("John", emp.getName());
verifyThat ("Doe", emp.getLastName);
基本上我想监视发送到我使用
注入的服务的参数
@InjectMocks
EmployeeAnalyzer employeeAnalyzer;
提前致谢。
当然! Mockito 很棒。您可以使用 ArgumentCaptor 来捕获 Employee
参数,然后进行一些断言。
(示例取自上一个 link)
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());
}
我有一个正在使用 Mockito 模拟的服务。有什么方法可以验证传递给服务调用的参数吗?
例如:
我有一个名为 employeeAnalyzer.calculateAnnualAppraisalForEmployee(Employee emp)
的服务。
所以从单元测试我想做一些类似的事情
verifyThat ("John", emp.getName());
verifyThat ("Doe", emp.getLastName);
基本上我想监视发送到我使用
注入的服务的参数@InjectMocks
EmployeeAnalyzer employeeAnalyzer;
提前致谢。
当然! Mockito 很棒。您可以使用 ArgumentCaptor 来捕获 Employee
参数,然后进行一些断言。
(示例取自上一个 link)
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());
}