作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想模拟 getUserDataFromExt() 并传递本地 HashMap ,并期望它返回一些数据列表,并向传入的 HashMap 添加/分配一些值。
注意:我无法从构造函数注入(inject)该 HashMap 并模拟它。
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
移动到其他方法并模拟它。您仍然可以使用相同的方式修改参数和结果。
您可能还需要考虑更改方法的行为 - 因为修改参数并返回结果 - 从其他开发人员的角度来看可能是非常意外的。
关于java - 我想使用 spy 来模拟方法,但我需要获得一些虚拟数据作为返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58307265/
使用登录后,我想吐出用户名。 但是,当我尝试单击登录按钮时, 它给了我力量。 我看着logcat,但是什么也没显示。 这种编码是在说。 它将根据我在登录屏幕中输入的名称来烘烤用户名。 不会有任何密码。
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
我是一名优秀的程序员,十分优秀!