Mockito מתי / ואז ספר בישול

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

ספר בישול זה מראה כיצד להשתמש במוקיטו כדי להגדיר התנהגות במגוון דוגמאות ומקרי שימוש.

ה הפורמט של ספר הבישול הוא ממוקד לדוגמא ופרקטי - אין צורך בפרטים והסברים זרים.

וכמובן, אם אתה רוצה ללמוד עוד על בדיקות טובות עם Mockito, עיין במאמרים האחרים ב- Mockito כאן.

אנחנו נהיה לועג לרשימה פשוטה יישום - אותה הטמעה בה השתמשנו בספר הבישול הקודם:

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

2. ספר בישול

להגדיר התנהגות חזרה פשוטה עבור מדומה

MyList listMock = Mockito.mock (MyList.class); מתי (listMock.add (anyString ())). ואז החזר (false); בוליאני נוסף = listMock.add (randomAlphabetic (6)); assertThat (הוסיף, הוא (שקר));

להגדיר התנהגות החזרה ללעג באופן חלופי

MyList listMock = Mockito.mock (MyList.class); doReturn (false) .when (listMock) .add (anyString ()); בוליאני נוסף = listMock.add (randomAlphabetic (6)); assertThat (הוסיף, הוא (שקר));

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

@Test (צפוי = IllegalStateException.class) חלל ציבורי givenMethodIsConfiguredToThrowException_whenCallingMethod_thenExceptionIsTrowne () {MyList listMock = Mockito.mock (MyList.class); מתי (listMock.add (anyString ())). ואז לזרוק (IllegalStateException.class); listMock.add (randomAlphabetic (6)); }

להגדיר את ההתנהגות של שיטה עם סוג החזרה בטל - לזרוק חריג

MyList listMock = Mockito.mock (MyList.class); doTrow (NullPointerException.class) .when (listMock) .clear (); listMock.clear ();

להגדיר את ההתנהגות של מספר שיחות

MyList listMock = Mockito.mock (MyList.class); מתי (listMock.add (anyString ())) .thenReturn (false) .thenTrow (IllegalStateException.class); listMock.add (randomAlphabetic (6)); listMock.add (randomAlphabetic (6)); // יזרוק את החריג

להגדיר את התנהגותו של מרגל

מופע MyList = MyList חדש (); MyList spy = Mockito.spy (מופע); doTrow (NullPointerException.class). כאשר (מרגל) .גודל (); spy.size (); // יזרוק את החריג

הגדר את השיטה כדי לקרוא לשיטה האמיתית, הבסיסית, ללעג

MyList listMock = Mockito.mock (MyList.class); מתי (listMock.size ()). ואז CallRealMethod (); assertThat (listMock.size (), equalTo (1));

הגדר שיחת שיטה מדומה עם תשובה מותאמת אישית

MyList listMock = Mockito.mock (MyList.class); doAnswer (קריאה -> "תמיד אותו דבר"). when (listMock) .get (anyInt ()); אלמנט מחרוזת = listMock.get (1); assertThat (אלמנט, הוא (שווה ל- ("תמיד אותו דבר"));

3. מסקנה

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

יישום כל הדוגמאות וקטעי הקוד ניתן למצוא באתר GitHub - זהו פרויקט מבוסס Maven, כך שיהיה קל לייבא ולהפעיל אותו כפי שהוא.