簡體   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