Ich habe eine Methode, die ich versuche, Einheitstest mit Mocks. Hier ist die Methode:Fehler beim Versuch, eine Karte zu stubben
{...
mapMasterMap = this.sysAdminService.getMasterData();
final Map<String, MasterVO> codeMap = (Map<String, MasterVO>) mapMasterMap
.get("mvo");
final Map<String, String> sessionMap = (Map<String, String>) mapMasterMap
.get("smap");
dataVO.setSessionMap(sessionMap);
dataVO.setVO1(codeMap.get("vo1"));
dataVO.setVO2(codeMap.get("vo2"));
sCommand.setDataVO(dataVO);
} catch (final Exception e) {
return mav;
}
return mav;
}
Und was ich versuche, die erste Zeile Stummel zu tun, so dass mapMasterMap eine gültige Karte enthält (und die codeMap.gets nicht sprengen) - wie:
{
@Mock
private MasterVO masterVO;
@Mock
private SysAdminService sysAdminService;
@InjectMocks
private SysAdminController sysAdminController;
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
when(this.sysAdminService.getMasterData())
.thenReturn(new HashMap<String, MasterVO>() {{
this.put("mvo",this.masterVO);
}};
}
@Test
public final void testType(){}
ich erhalte eine Fehlermeldung:
The method
thenReturn(Map<String,Object>)
in the typeOngoingStubbing<Map<String,Object>>
is not applicable for the arguments (new HashMap<String,MasterVO>(){}
)
Also, erstens - verfolge ich den richtigen Ansatz? Wenn ja, wie kann ich das beheben?
Zunächst einmal, verwenden Sie nicht [die Doppel-Klammer-Muster] (https://blog.jooq.org/2014/12/08/dont-be-clever-the-double-curly-braces-anti- Muster /) - es ist eine Quelle von Speicherlecks unter anderen Problemen. [Guavas "ImmutableMap"] (https://github.com/google/guava/wiki/ImmutableCollectionsExplained) hat ein fließendes Builder-Muster, wenn Sie eine "Map" inline erstellen möchten. – dimo414
Warum haben Sie auch nur einen Teil Ihrer Methode hinzugefügt? Was ist die Methodensignatur? Welcher Typ ist 'mav'? Was ist "blah"? Wenn Sie Probleme bei der Kompilierung haben, ist die Freigabe des echten Codes, den Sie zu kompilieren versuchen, ein notwendiger erster Schritt, um nützliche Anleitungen zu erhalten. – dimo414
mav ist ModelAndView - Ich entfernte Ruhe, weil diese für die Frage irrelevant schien. – user2666282