המסגרת של Mockito מספקת מגוון שיטות כגון mock(), verify(), when() וכו', המשמשות לבדיקת יישומי Java. שימוש בשיטות מוגדרות מראש אלו מקל מאוד על הבדיקה.
התיאור הקצר של שיטות Mockito ניתן להלן:
apurva padgaonkar
שיטת Mockito mock()
הוא משמש ליצירת אובייקטים מדומים של מחלקה או ממשק נתון. Mockito מכיל חמישה לִלְעוֹג() שיטות עם טיעונים שונים. כשלא הקצינו שום דבר ללעג, הם יחזירו ערכי ברירת מחדל. כל חמש השיטות מבצעות את אותה פונקציה של לעג לאובייקטים.
להלן שיטות ה-mock() עם פרמטרים שונים:
תחביר: mock(Class classToMock)
תחביר: mock(Class classToMock, Answer defaultAnswer)
תחביר: mock(Class classToMock, MockSettings mockSettings)
תחביר: mock(Class classToMock, ReturnValues returnValues)
תחביר: mock(Class classToMock, שם מחרוזת)
קטע הקוד הבא מראה כיצד להשתמש לִלְעוֹג() שיטה:
ToDoService doService = mock(ToDoService.class);
שיטת Mockito when()
זה מאפשר שיטות סתימה. יש להשתמש בו כאשר אנו רוצים ללעוג כדי להחזיר ערכים ספציפיים כאשר קוראים לשיטות מסוימות. במילים פשוטות,' מתי שיטת XYZ() נקראת, לאחר מכן לחזור ABC.' הוא משמש בעיקר כאשר יש תנאי כלשהו לביצוע.
תחביר: when(T methodCall)
קטע הקוד הבא מראה כיצד להשתמש בשיטת when():
when(mock.someCode ()).thenReturn(5);
בקוד למעלה, thenReturn() משמש בעיקר עם מתי() שיטה.
שיטת Mockito verify()
ה תאשר() השיטה משמשת כדי לבדוק אם שיטות מסוימות נקראות או לא. במילים פשוטות, זה מאמת את ההתנהגות המסוימת שקרה פעם אחת במבחן. הוא משמש בתחתית קוד הבדיקה כדי להבטיח שהשיטות המוגדרות נקראות.
המסגרת של Mockito עוקבת אחר כל קריאות השיטה עם הפרמטרים שלהן ללעג לאובייקטים. לאחר לעג, נוכל לוודא שהתנאים שהוגדרו מתקיימים או לא על ידי שימוש בשיטת verify() . סוג זה של בדיקות מכונה לפעמים בדיקות התנהגותיות. הוא בודק שנקראת מתודה עם הפרמטרים הנכונים במקום לבדוק את התוצאה של קריאה למתודה.
שיטת verify() משמשת גם לבדיקת מספר הפניות. אז נוכל לבדוק את המספר המדויק של הפניות באמצעות ה- שיטה פעמים, לפחות פעם אחת שיטה, ו לכל היותר שיטה לשיטה לעגנית.
ישנם שני סוגים של שיטות verify() הזמינות במחלקה Mockito, הניתנות להלן:
תחביר: לאמת (ללעג)
תחביר: לאמת (T mock, מצב VerificationMode)
שיטת Mockito spy()
Mockito מספקת שיטה ללעוג חלקית לאובייקט, המכונה מרגל שיטה. כאשר משתמשים בשיטת הריגול, קיים אובייקט אמיתי, ומרגלים או בדל נוצרים מאותו אובייקט אמיתי. אם לא נתקע שיטה באמצעות מרגל, זה יקרא התנהגות השיטה האמיתית. הפונקציה העיקרית של שיטת spy() היא שהיא עוקפת את השיטות הספציפיות של האובייקט האמיתי. אחת הפונקציות של שיטת spy() היא שהיא מאמתת הפעלת שיטה מסוימת.
ישנם שני סוגים של שיטות spy() זמינות במחלקה Mockito:
תחביר: מרגל (אובייקט T)
תחביר: spion(Class classToSpy)
קטע הקוד הבא מראה כיצד להשתמש בשיטת spy():
List spyArrayList = spy(ArrayList.class);
שיטת Mockito reset()
שיטת Mockito reset() משמשת לאיפוס הדוגמניות. הוא משמש בעיקר לעבודה עם המיכל המוזרק. בדרך כלל, שיטת reset() גורמת לקוד ארוך ולבדיקות גרועות. עדיף ליצור דוגמניות חדשות במקום להשתמש בשיטת reset(). זו הסיבה ששיטת reset() משמשת לעתים רחוקות בבדיקה.
החתימה של שיטת reset() היא:
דוגמאות לעצים בינאריים
public static void reset(T ... mocks) { MOCKITO_CORE.reset(mocks); }
שיטת Mockito verifyNoMoreInteractions()
הוא משמש כדי לבדוק שלכל אחד מהלעגים הנתונים יש אינטראקציות לא מאומתות. אנו יכולים להשתמש בשיטה זו לאחר אימות כל הלעג, כדי לוודא ששום דבר אחר לא הופעל על הלעג. הוא גם מזהה את הפעלות הלא מאומתות המתרחשות לפני שיטת הבדיקה, למשל ב-setup(), בשיטת @Before או בקונסטרוקטור. זוהי שיטה אופציונלית, ואנחנו לא צריכים להשתמש בה בכל בדיקה.
החתימה של שיטת verifyNoMoreInteractions() היא:
public static void verifyNoMoreInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); }
שיטת Mockito verifyZeroInteractions()
זה מוודא שלא התרחשה אינטראקציה בלעג הנתון. הוא גם מזהה את הפעלות שהתרחשו לפני שיטת הבדיקה, למשל ב-setup(), בשיטת @Before או בקונסטרוקטור.
החתימה של שיטת verifyZeroInteractions() היא:
public static void verifyZeroInteractions(Object... mocks) { MOCKITO_CORE.verifyNoMoreInteractions(mocks); }
שיטת Mockito doThrow()
הוא משמש כאשר להדביק שיטה בטל כדי לזרוק חריג. זה יוצר מופע חריג חדש עבור כל הפעלת שיטה. ישנם שני סוגים של שיטות doThrow() זמינות במחלקה Mockito עם פרמטרים שונים, כפי שמוצג להלן:
החתימה של שיטת doThrow() היא:
public static Stubber doThrow(Throwable toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsException(toBeThrown)); }
תחביר: doThrow(Class toBeThrown)
החתימה של שיטת doThrow() היא:
public static Stubber doThrow(Class toBeThrown) { return MOCKITO_CORE.doAnswer(new ThrowsExceptionClass(toBeThrown)); }
שיטת Mockito doCallRealMethod().
הוא משמש כאשר אנו רוצים לקרוא למימוש האמיתי של שיטה. במילים אחרות, הוא משמש ליצירת לעג חלקי של אובייקט. הוא משמש במצבים נדירים, כמו לקרוא לשיטות האמיתיות. זה דומה לשיטת spy() וההבדל היחיד הוא שהיא מביאה לקוד מורכב.
החתימה של שיטת doCallRealMethod() היא:
public static Stubber doCallRealMethod() { return MOCKITO_CORE.doAnswer(new CallsRealMethods()); }
שיטת Mockito doAnswer()
הוא משמש כאשר אנו רוצים להדביק שיטה בטל עם סוג תשובה גנרי. החתימה של שיטת doAnswer() היא:
public static Stubber doAnswer(Answer answer) { return MOCKITO_CORE.doAnswer(answer); }
שיטת Mockito doNothing().
הוא משמש להגדרת שיטות בטל לא לעשות כלום. שיטת doNothing() משמשת במצבים נדירים. כברירת מחדל, שיטות הריק במופעים מדומים לא עושות כלום, כלומר, לא מתבצעת משימה.
החתימה של שיטת doNothing() היא:
public static Stubber doNothing() { return MOCKITO_CORE.doAnswer(new DoesNothing()); }
שיטת Mockito doReturn()
הוא משמש במקרים נדירים שבהם איננו יכולים להשתמש ב-Mockito.when(object). השיטה Mockito.when(object) מוצעת תמיד ל-stubbing מכיוון שהיא בטוחה לסוג ארגומנט וקריא יותר בהשוואה לשיטת doReturn().
החתימה של שיטת doReturn() היא:
תכונות חומצה
public static Stubber doReturn(Object toBeReturned) { return MOCKITO_CORE.doAnswer(new Returns(toBeReturned)); }
שיטת Mockito inOrder()
הוא משמש ליצירת אובייקטים המאפשרים אימות של לעג בסדר מסוים. האימות שנעשה לפי הסדר הוא גמיש יותר מכיוון שאנו לא צריכים לאמת את כל האינטראקציות. עלינו לאמת רק את האינטראקציות המעוניינים בבדיקה (בסדר). אנו יכולים גם להשתמש בשיטת inOrder() כדי ליצור אובייקט inOrder המעביר לעג הרלוונטיים לאימות לפי הסדר.
החתימה של שיטת Mockito.inOrder() היא:
public static InOrder inOrder(Object... mocks) { return MOCKITO_CORE.inOrder(mocks); }
שיטת Mockito ignoreStubs()
הוא משמש כדי להתעלם מהשיטות המעופפות של לעג נתון לצורך אימות. זה שימושי עם שיטות verifyNoMoreInteractions() או אימות inOrder(). זה גם עוזר בהימנעות מאימות מיותר של שיחות עצומות.
החתימה של שיטת ignoreStubs() היא:
public static Object[] ignoreStubs(Object... mocks) { return MOCKITO_CORE.ignoreStubs(mocks); }
שיטת Mockito times()
הוא משמש לאימות המספר המדויק של הפעלות לשיטה, מה שאומר שהוא מצהיר כמה פעמים שיטה מופעלת. החתימה של שיטת times() היא:
public static VerificationMode times(int wantedNumberOfInvocations) { return VerificationModeFactory.times(wantedNumberOfInvocations); }
שיטת Mockito never()
הוא משמש כדי לוודא שהאינטראקציה לא התרחשה. החתימה של שיטת never() היא:
public static VerificationMode never() { return times(0); }
שיטת Mockito atLeastOnce()
הוא משמש לאימות הפנייה לפחות פעם אחת, כלומר יש להפעיל את השיטה לפחות פעם אחת.
החתימה של השיטה atLeastOnce() היא:
public static VerificationMode atLeastOnce() { return VerificationModeFactory.atLeastOnce(); }
שיטת Mockito atLeast()
הוא משמש כדי לאמת את ההתקשרות לפחות x מספר פעמים. למשל, נתון לפחות(3) פירושו שהשיטה תפעיל לפחות שלוש פעמים.
החתימה של השיטה atLeast() היא:
public static VerificationMode atLeast(int minNumberOfInvocations) { return VerificationModeFactory.atLeast(minNumberOfInvocations); }
שיטת Mockito atMost()
הוא משמש לאימות הפנייה לכל היותר x מספר פעמים. למשל, נתון atMost(3) פירושו שהשיטה תפעיל מקסימום שלוש פעמים.
החתימה של שיטת atMost() היא:
public static VerificationMode atMost(int maxNumberOfInvocations) { return VerificationModeFactory.atMost(maxNumberOfInvocations); }
שיטת Mockito calls()
זה מאפשר אימות לא חמדני לפי הסדר. ניתן להשתמש בו רק עם שיטת האימות inOrder() . לדוגמה, inOrder.verify(mock, calls(3)).xyzMethod('...');
החתימה של שיטת calls() היא:
public static VerificationMode calls( int wantedNumberOfInvocations ){ return VerificationModeFactory.calls( wantedNumberOfInvocations ); }
שיטת Mockito only()
הוא בודק שהשיטה הנתונה הייתה השיטה היחידה שהופעלה. החתימה של השיטה only() היא:
מחרוזת דומה
public static VerificationMode only() { return VerificationModeFactory.only(); }
שיטת Mockito timeout()
זה מאפשר ל-Mockito לבצע אימות עם פסק זמן. הוא מורה לאימות לחכות לפרק זמן מסוים לאינטראקציה מסוימת במקום להיכשל באופן מיידי. זה עשוי להיות שימושי לבדיקה במצבים קיימים.
שיטת timeout() שונה מהשיטה after() שכן שיטת after() ממתינה לכל התקופה אלא אם כן התוצאה הסופית מוצהרת ואילו שיטת timeout() תפסיק ברגע שהאימות יעבור. הוא משמש לעתים רחוקות בבדיקות.
החתימה של שיטת timeout() היא:
public static VerificationWithTimeout timeout(long millis) { return new Timeout(millis, VerificationModeFactory.times(1)); }
שיטת Mockito after()
זה מאפשר ל-Mockito לאמת על פני פרק זמן נתון. כבר דנו בכך ששיטת after() שונה משיטת timeout() .
החתימה של שיטת after() היא:
public static VerificationAfterDelay after(long millis) { return new After(millis, VerificationModeFactory.times(1)); }
Mockito validateMockitoUsage() שיטה
הוא משמש לאימות מפורש של מצב המסגרת כדי לזהות שימוש לא חוקי במסגרת Mockito. זוהי תכונה אופציונלית של Mockito מכיוון שהיא מאמתת את השימוש כל הזמן. שניהם, הרץ המובנה (MockitoJUnitRunner) והכלל (MockitoRule) קורא לשיטת validateMockitoUsage() לאחר כל שיטת בדיקה.
החתימה של שיטת validateMockitoUsage() היא:
public static void validateMockitoUsage() { MOCKITO_CORE.validateMockitoUsage(); }
שיטת Mockito withSettings().
הוא משמש ליצירת דוגמיות עם הגדרות דוגמיות נוספות. יש להשתמש בו מדי פעם בבדיקה. במקום להשתמש בשיטת withSettings(), צור בדיקות פשוטות באמצעות דוגמיות פשוטות. הסיבות העיקריות לשימוש ב-MockSettings הן
- על ידי שימוש ב-MockSetting, נוכל להוסיף בקלות הגדרות מדומה אחרות בעת הצורך.
- הוא משלב הגדרות מדומות שונות מבלי לבלבל את הקוד.
החתימה של שיטת withSettings() היא:
public static MockSettings withSettings() { return new MockSettingsImpl().defaultAnswer(RETURNS_DEFAULTS); }