我想模拟getUserDataFromExt()并传递本地哈希图,并期望它返回一些数据列表,还向传入的哈希图中添加/分配一些值。
注意:我无法从构造函数注入该哈希图并对其进行模拟。
public List<Report> getUserData() {
.............
..............
Map<String, Set<Integer>> studyToRelationshipPk = new HashMap<>();
List<NetworkUserSiteDetail> uniqueList = getUserDataFromExt(studyToRelationshipPk);
..............
}
有没有一种方法可以模拟该方法,仍然可以从传入本地参数的数据中获取数据并返回一些列表。
如果您无法重构代码,则需要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
移至其他方法并对其进行模拟。您仍然可以使用相同的方式来修改参数和结果。
从其他开发人员的角度来看,您可能还需要考虑更改方法的行为-修改参数并返回结果-可能是出乎意料的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句