モック オブジェクトのマップをモックするのに問題があります。
モッキートを使用しています。
これが私の機能です:
@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 を返すため、テストは失敗します。
アドバイスをいただければ幸いです。