我想模擬 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其他方法并對其進行模擬。您仍然可以使用相同的方式修改參數和結果。
您可能還需要考慮更改方法的行為 - 因為修改參數并返回結果 - 從其他開發人員的角度來看可能是非常意外的。
添加回答
舉報
0/150
提交
取消