繁体   English   中英

doAnswer检查哪个类称为特定函数?

[英]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();

https://static.javadoc.io/org.mockito/mockito-core/1.10.19/org/mockito/invocation/InvocationOnMock.html

这个问题可能会有所帮助: 如何使用stacktrace或反射找到方法的调用者?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM