亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我想使用間諜來模擬方法,但我需要獲得一些虛擬數據作為回報

我想使用間諜來模擬方法,但我需要獲得一些虛擬數據作為回報

www說 2023-10-12 14:45:08
我想模擬 getUserDataFromExt() 并傳遞本地哈希圖,并期望它返回一些數據列表,并向傳入的哈希圖添加/分配一些值。注意:我無法從構造函數注入該哈希圖并模擬它。 public List<Report> getUserData() {    .............    ..............    Map<String, Set<Integer>> studyToRelationshipPk = new HashMap<>();                List<NetworkUserSiteDetail> uniqueList = getUserDataFromExt(studyToRelationshipPk);    ..............    }有沒有一種方法可以讓我模擬該方法并仍然從傳入的本地參數中獲取數據并返回一些列表。
查看完整描述

1 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

如果您無法重構代碼,則需要spy為您的類創建一個(以模擬getUserDataFromExt)。


然后你可以使用thenAnswer修改你的 HashMap 并返回列表:


when(spy.getUserDataFromExt()).thenAnswer(

    new Answer() {

         public Object answer(InvocationOnMock invocation) {


             // get your method arguments

             Object[] args = invocation.getArguments();


             // do whatever with your hashmap


             // return your list

             return ...

         }

    }

);

如果您可以重構代碼,最好將該方法移至getUserDataFromExt其他方法并對其進行模擬。您仍然可以使用相同的方式修改參數和結果。


您可能還需要考慮更改方法的行為 - 因為修改參數并返回結果 - 從其他開發人員的角度來看可能是非常意外的。


查看完整回答
反對 回復 2023-10-12
  • 1 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號