[英]doAnswer to check which class called a specific function?
我试图仅当从特定类调用时模拟方法,因为基础框架将N次调用我的模拟方法。
有没有办法描述特定模拟方法的调用者,以便我可以根据调用者有条件地返回数据?
我正在使用Mockito和doAnswer API
如果您正在寻找方法的调用层次结构,这将是完美的答案
StackTraceElement[] cause = Thread.currentThread().getStackTrace();
从该数组中可以获得所有层次结构类名称,以便您在此数组中检查哪个类调用了此方法
我认为您应该能够返回自定义答案。 使用此API,您可以访问模拟的调用。 您可能可以使用Deadpool的答案,并且应该能够根据调用者有条件地返回某些内容。 帮助有帮助!
Mockito.doAnswer(new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
// TODO Auto-generated method stub
// do something with the stack trace
StackTraceElement[] cause = Thread.currentThread().getStackTrace();
return somthing;
}
}).when(service).doSomething();
这个问题可能会有所帮助: 如何使用stacktrace或反射找到方法的调用者?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.