我在模拟模拟对象的地图时遇到了一些麻烦。
我正在使用 Mockito。
这是我的功能:
@Override
protected void doGet(SlingHttpServletRequest request,
SlingHttpServletResponse response) throws ServletException, IOException {
try {
Session session = request.getResourceResolver().adaptTo(Session.class);
PrintWriter writer = response.getWriter();
boolean testsPassed = isValid(agentMgr.getAgents().values()) && testAgents(agentMgr.getAgents(), session);
if (testsPassed) {
writer.write(successOutput);
} else {
writer.write(failureOutput);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
private boolean isValid(Map<String, Agent> agents) {
for (Map.Entry<String, Agent> agentEntry : agents.entrySet()) {
if (agentEntry != null) {
Agent agent = agentEntry.getValue();
boolean isValid = agent.isValid();
String id = agent.getId();
// regex match string id
if (id.matches(regex) || id.equalsIgnoreCase(goldId)) {
if (agent != null) {
if (!agent.isValid()) {
return false;
}
}
}
}
}
return true;
}
我试图像这样组装我的模拟对象:
when(passAgent1.isValid()).thenReturn(true);
when(passAgent1.getId()).thenReturn("publish");
Map<String, Agent> mockAgents = new HashMap<String, Agent>();
mockAgents.put("publish", passAgent1);
mockAgents.put("i-12345678", passAgent2);
when(agentMgr.getAgents()).thenReturn(mockAgents);
当我运行时,似乎 Agent 对象作为 Agent$$EnhancerWithMockitoByGLIB$$738eb07c 返回
isValid 和 getId 的模拟函数都返回 null,因此我的测试失败了。
任何建议将不胜感激。