So aktivieren Sie die Karte enthält Karte mit Eintrag

8

Ich habe einen Komponententest, der nach einem verschachtelten Kartenwert suchen muss. Ich kann meine Behauptung auf die Arbeit bringen, indem ich den Eintrag herausziehe und die zugrunde liegende Map anpasse, aber ich suchte nach einem klaren Weg, um zu zeigen, was die Behauptung tut. Hier ist ein sehr vereinfachter Test:

%Vor%

Es scheint das Problem ist, dass die äußere Karte mit hasEntry(K key, V value) verglichen wird, während ich hasEntry(Matcher<? super K> keyMatcher, Matcher<? super V> valueMatcher) verwenden möchte. Ich bin mir nicht sicher, wie ich die Behauptung, die zweite Form zu benutzen, erzwingen soll.

Vielen Dank im Voraus.

    
Jeff E 20.07.2015, 18:31
quelle

3 Antworten

2

Ich würde wahrscheinlich einen neuen Matcher dafür ausstrecken, so etwas (Vorsicht, NPEs lauern):

%Vor%     
Florian Schaetz 20.07.2015, 18:46
quelle
2

Wenn du upperMap als Map<String, Map<String, Object>> deklarierst, brauchst du den hässlichen Cast nicht. So:

%Vor%     
David Pérez Cabrera 20.07.2015 19:14
quelle
2

Wenn Sie Map<String, Object> nur als Werte in Ihre outerMap setzen möchten, passen Sie die Deklaration entsprechend an. Dann können Sie

tun %Vor%

Object value = "bar"; ist aus Kompilierungsgründen erforderlich. Alternativ könnten Sie

verwenden %Vor%     
eee 21.07.2015 05:40
quelle

Tags und Links