用Mockito捕捉两个论点

时间:2018-02-07 06:22:00

标签: java unit-testing mocking mockito

我想测试MyClass,我的意思是测试公共函数myFunction。此函数从MyService调用someMethod。 我想检查它是否传递了创建的有效参数str1和str2 在这堂课上。 我正在考虑捕获那些,但我不确定是否有可能捕获2个参数,或者如何捕获它们。 我不想在可能的情况下改变可见性

class MyService
{
public void someMethod(String str1, String str2);
}

class MyClass
{
private MyService myService;
private String createStrOne(){...};
private String createStrTwo(){...};
....
public void myFunction()
{
  myService = new MyService();
  myService.someMethod(createStrOne(),createStrTwo());
}
}

1 个答案:

答案 0 :(得分:1)

你只需要两个参数捕获者

@Mock
private Service service;

@Captor
private ArgumentCaptor<String> strOneCaptor;

@Captor
private ArgumentCaptor<String> strTwoCaptor;

在测试中:

Mockito.verify(service).someMethod(strOneCaptor.capture(), strTwoCaptor.capture());

assertEquals(strOneCaptor.getValue(), expectedStrOne);
assertEquals(strTwoCaptor.getValue(), expectedStrTwo);