असली कार्यान्वयन का उपयोग कर mockMap
क्यों है? मैं इसे कैसे रोकूं? जब परीक्षण चल रहा है 0:वास्तविक कार्यान्वयन का उपयोग कर मॉकिटो मॉक ऑब्जेक्ट
विधि testFirstKeyMatch
when(mockMap.keySet().toArray()[0])...
में ArrayIndexOutOfBoundsException फेंकता है।
MaxSizeHashMap, 7 की अधिकतम आकार के साथ एक LinkedHashMap है एक IndexOutOfBoundsException फेंकता है जब मैं में और अधिक डाल करने के लिए प्रयास करते हैं।
प्रोफ़ाइल इस के लिए आवश्यक कुछ का ट्रैक रखता है।
SuperClass.java
public class SuperClass {
protected String[] days;
protected MaxSizeHashMap<String, String> map;
public SuperClass() {
days = new String[7];
map = new MaxSizeHashMap<String, String>();
//...
}
void updateDays() {
cal = Calendar.getInstance();
for (int i = 0; i < 7; i = i + 1) {
//adds short names "Mon", "Tue", ... to days
days[i] = cal.getDisplayName(Calendar.DAY_OF_WEEK,
Calendar.SHORT, Locale.US);
cal.add(Calendar.DATE, 1);
}
}
void firstKeyMatch(Profile profile) {
updateDays();
//checks if first key of map is not same as days[0]
if (days[0] != map.keySet().toArray()[0]) {
profile.add();
//...
}
}
}
SuperClassTest.java
@RunWith(MockitoJUnitRunner.class)
public class SuperClassTest {
@InjectMocks
private SuperClass spr = new SuperClass();
@Mock
private MaxSizeHashMap<String, String> mockMap;
@Mock
private Profile mockProfile;
//...
@Test
public void testFirstKeyMatch() {
when(mockMap.keySet().toArray()[0]).thenReturn(spr.days[0]);
verify(mockProfile, never()).add();
}
}
प्रयास करें इस 'जब (mockMap.keySet())। फिर रीटर्न (नया हैशसेट (Arrays.asList ("आपका दिन स्ट्रिंग")); ~ – Abubakkar
के साथ आप जिस भी मूल्य का परीक्षण कर रहे हैं उसके साथ "अपनी दिन स्ट्रिंग" को प्रतिस्थापित करके, यह वास्तविक कार्यान्वयन नहीं है, मैक्स डिफ़ॉल्ट मान वापस कर देता है। 'KeySet()' के मामले में, यह एक खाली संग्रह है। – Jonathan