[英]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.