Ich versuche, Unit-Test unter Verwendung von Powermockito für folgende Methode zu schreiben -Griff anonyme Klasse mit Generics in Mockito
public String getGenerator(String json) throws IOException {
String jwt = "";
ObjectMapper mapper = new ObjectMapper();
// convert JSON string to Map
Map<String, Object> map = mapper.readValue(json, new TypeReference<Map<String, Object>>() {
}); // Here passing TypeReference annonymously
// Create a JWT
JWTGenerator generator = new JWTGenerator();
if (map != null && map.size() > 0) {
jwt = generator.createJWT(map);
}
return jwt;
}
I Testmethode geschrieben habe wie -
@Test
public void testGetJWTGenerator() throws Exception {
ObjectMapper mockMapper = PowerMockito.mock(ObjectMapper.class);
PowerMockito.whenNew(ObjectMapper.class).withNoArguments().thenReturn(mockMapper);
JWTGenerator mockJWTDecoder = PowerMockito.mock(JWTGenerator.class);
PowerMockito.whenNew(JWTGenerator.class).withNoArguments().thenReturn(mockJWTDecoder);
Map<String, Object> anyMap = new HashMap<String, Object>();
anyMap.put("testStr", new Object());
TypeReference<Map<String, Object>> mockTypeReference = (TypeReference<Map<String, Object>>) PowerMockito.mock(TypeReference.class);
PowerMockito.whenNew(TypeReference.class).withNoArguments().thenReturn(mockTypeReference);
PowerMockito.when(mockMapper.readValue(Mockito.anyString(), Mockito.eq(mockTypeReference))).thenReturn(anyMap);
PowerMockito.when(mockJWTDecoder.createJWT(anyMap)).thenReturn(Mockito.anyString());
utilityController = new UtilityController();
utilityController.getJWTGenerator("{\"someStr\":\"someStr\"}");
Mockito.verify(mockJWTDecoder, Mockito.times(1)).createJWT(anyMap);
}
Wenn ich diesen Test Mich betreiben immer bekommen, es zu sagen fehlgeschlagen -
Wanted but not invoked:
jWTGenerator.createJWT(
{[email protected]}
);
es ist wie Stub sieht nicht so funktioniert, wie ich immer für das „null“ erhalten Zeile -
Map<String, Object> map = mapper.readValue(json, new TypeReference<Map<String, Object>>() {
}); // Here passing TypeReference annonymously
Ist es wegen der anonymen Instanziierung der TypeReference-Klasse?
Danke für detaillierte Erklärung. Ich wechselte zu Mockito.>> any() und es funktioniert. –
Saurabh