שיטות ה Mockito של Mockito

1. סקירה כללית

מדריך זה ממחיש שימושים שונים בסטטי הסטנדרטי לִלְעוֹג שיטות של מוקיטו ממשק API.

כמו במאמרים אחרים המתמקדים במסגרת Mockito (כמו Mockito Verify או Mockito When / Then), ה- MyList המחלקה המוצגת להלן תשמש כשיתוף הפעולה שיש ללעוג לו במקרי מבחן:

class class MyList מרחיב את AbstractList {@Override public String get (int index) {return null; } @ גודל גודל ציבורי אינטראקטיבי () {להחזיר 1; }}

2. לעג פשוט

הגרסה הפשוטה ביותר של עומס לִלְעוֹג השיטה היא זו עם פרמטר יחיד ללעוג למחלקה:

מדגם T סטטי ציבורי (Class ClassToMock)

נשתמש בשיטה זו כדי ללעוג לשיעור ולקבוע ציפייה:

MyList listMock = mock (MyList.class); מתי (listMock.add (anyString ())). ואז החזר (false);

ואז בצע שיטה על הלעג:

בוליאני נוסף = listMock.add (randomAlphabetic (6));

הקוד הבא מאשר שה- לְהוֹסִיף השיטה הופעלה על הלעג, וכי ההפעלה מחזירה ערך התואם את הציפייה שקבענו לפני:

אמת (listMock) .add (anyString ()); assertThat (הוסיף, הוא (שקר));

3. ללעג עם שמו של Mock

בחלק זה נסקור גרסה נוספת של לִלְעוֹג שיטה המסופקת עם טיעון המציין את שם הלעג:

מדגם T סטטי ציבורי (Class ClassToMock, שם מחרוזת)

באופן כללי, שמו של מדומה אינו קשור לקוד עבודה, אך עשוי להיות מועיל בכל הנוגע לאיתור באגים, שם שמו של הלעג משמש לאיתור שגיאות אימות.

כדי לוודא שהשם המסופק של מדומה נכלל במסר של חריג שנזרק מאימות לא מוצלח, אנו נסמך על יישום JUnit של TestRulממשק e, נקרא ExpectedException, וכלול אותו בשיעור מבחן:

@ כלל ציבורי ExpectedException נזרק = ExpectedException.none ();

כלל זה ישמש לטיפול בחריגים המושלכים משיטות בדיקה.

בקוד הבא, אנו יוצרים דמה עבור ה- MyList בכיתה ושמו myMock:

MyList listMock = mock (MyList.class, "myMock");

לאחר מכן, קבעו ציפייה לשיטת הלעג וביצעו אותה:

מתי (listMock.add (anyString ())). ואז החזר (false); listMock.add (randomAlphabetic (6));

ניצור אימות שנכשל בכוונה שצריך לזרוק חריג עם ההודעה המכילה מידע על הלעג. כדי לעשות זאת, יש לקבוע תחילה את הציפיות על החריג:

throw.expect (TooLittleActualInvocations.class); throw.expectMessage (containString ("myMock.add"));

האימות הבא אמור להיכשל ולהשליך חריג התואם את הצפוי:

אמת (listMock, זמנים (2)). הוסף (anyString ());

הנה המסר של החריג שנזרק:

org.mockito.exceptions.verification.TooLittleActualInvocations: myMock.add (); מבוקש פעמיים: ב- com.baeldung.mockito.MockitoMockTest .whenUsingMockWithName_thenCorrect (MockitoMockTest.java: ...) אבל היה פעם אחת: ב com.baeldung.mockito.MockitoMockTest .whenUsingMockWithName_thenCorrect (MockitoMockTest.java: ...

כפי שאנו רואים, שמו של הלעג נכלל בהודעת החריג, אשר יהיה שימושי למציאת נקודת הכשל במקרה של אימות לא מוצלח.

4. ללעוג עם תשובה

כאן נדגים את השימוש ב- לִלְעוֹג גרסה בה האסטרטגיה לתשובות הלעג לאינטראקציה מוגדרת בזמן היצירה. זֶה לִלְעוֹג חתימת השיטה בתיעוד Mockito נראית כדלקמן:

מדגם T סטטי ציבורי (Class classToMock, תשובת ברירת מחדל תשובה)

נתחיל בהגדרה של יישום של ה- תשובה מִמְשָׁק:

מחלקה CustomAnswer מיישמת תשובה {@Override תשובה בוליאנית ציבורית (InvocationOnMock קריאה) זורק זורק {return false; }}

ה CustomAnswer הכיתה לעיל משמשת לדור של דמה:

MyList listMock = mock (MyList.class, CustomAnswer חדש);

אם לא נקבע ציפייה לשיטה, תשובת ברירת המחדל שהוגדרה על ידי ה- CustomAnswer סוג, ייכנס לשחק. על מנת להוכיח זאת, נדלג על שלב הגדרת הציפייה ונקפוץ לביצוע השיטה:

בוליאני נוסף = listMock.add (randomAlphabetic (6));

האימות והטענה הבאים מאשרים כי לִלְעוֹג שיטה עם תשובה הטיעון עבד כצפוי:

אמת (listMock) .add (anyString ()); assertThat (הוסיף, הוא (שקר));

5. ללעוג עם MockSettings

הגמר לִלְעוֹג השיטה המכוסה במאמר זה היא הגרסה עם פרמטר של MockSettings סוּג. שיטה זו עמוסה יתר על המידה משמשת לספק דמה לא סטנדרטית.

ישנן מספר הגדרות מותאמות אישית הנתמכות על ידי שיטות ה- MockSettings ממשק, כגון רישום מאזין להזמנת שיטות על הלעג הנוכחי עם invocationListeners, הגדרת סידור עם ניתן לסדר, המציין את המופע שאפשר לרגל איתו spiedInstance, קביעת תצורה של Mockito לנסות להשתמש בבנאי בעת התנעה של דמה עם useConstructor, וכמה אחרים.

מטעמי נוחות, אנו נשתמש שוב ב CustomAnswer בכיתה שהוצגה בסעיף הקודם כדי ליצור MockSettings יישום המגדיר תשובת ברירת מחדל.

א MockSettings האובייקט מופעל בשיטת המפעל באופן הבא:

MockSettings customSettings = withSettings (). DefaultAnswer (CustomAnswer חדש ());

אובייקט הגדרה זה ישמש ביצירת דמה חדשה:

MyList listMock = mock (MyList.class, customSettings);

בדומה לסעיף הקודם, נפעיל את ה- לְהוֹסִיף שיטת א MyList למשל ולוודא כי א לִלְעוֹג שיטה עם MockSettings ארגומנט פועל כמתוכנן באמצעות קטע הקוד הבא:

בוליאני נוסף = listMock.add (randomAlphabetic (6)); אמת (listMock) .add (anyString ()); assertThat (הוסיף, הוא (שקר));

6. מסקנה

הדרכה זו סיקרה את לִלְעוֹג שיטת Mockito בפירוט. ניתן למצוא את היישום של דוגמאות וקטעי קוד בפרויקט GitHub.


$config[zx-auto] not found$config[zx-overlay] not found