当mock的方法参数是个对象时,可以用Mockito.argThat()去mock请求
public class Result{
private String name;
private String age;
private String id;
}
public class Request{
private String id;
}
@SpringBootTest
public class ServiceTest {
@Resource
private BusinessService businessService;
//要mock的Bean
@MockBean
private Service service;
@Test
public void test() {
String str= "{"name":"张三","age":"12","id":"001"}"
Result result= JSON.parseObject(str, Result.class);
//当调用service.getPurchaseReceipt()方法时会返回mock的值
Mockito.when(service.getPurchaseReceipt(Mockito.argThat(new ArgumentMatcher<Request>() {
@Override
public boolean matches(Request request) {
if (request == null) {
return false;
}
if ("001".equals(request.getId())) {
return true;
}
return false;
}
}))).thenReturn(result);
}
}