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

时间:2018-07-11 14:00:02

标签: java mockito

当底层框架调用我的模拟方法N次时,我试图模拟仅从特定类调用的方法。

有没有办法描述特定模拟方法的调用者,以便我可以根据调用者有条件地返回数据?

我正在使用Mockito和doAnswer API

2 个答案:

答案 0 :(得分:1)

如果您正在寻找方法的调用层次结构,这将是完美的答案

StackTraceElement[] cause = Thread.currentThread().getStackTrace();

从此数组中,您可以获得所有层次结构类名称,以便您在此数组中检查哪个类调用了此方法

答案 1 :(得分:1)

我认为您应该能够返回自定义答案。使用此API,您可以访问模拟的调用。您可能可以使用Deadpool的答案,并且应该能够根据调用者有条件地返回某些内容。有用的帮助!

=INDEX(Database!$A$1:$A$250,MATCH(B9,Database!$B$1:$B$250,0))

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

这个问题可能会有所帮助: How do I find the caller of a method using stacktrace or reflection?