מבוא ל- Hoverfly בג'אווה

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

במאמר זה נסתכל על ספריית Java Hoverfly - המספקת דרך קלה ליצירת סימנים / הדמיות ממשק API אמיתיות.

2. תלות Maven

כדי להשתמש ב- Hoverfly, עלינו להוסיף תלות אחת של Maven:

 io.specto hoverfly-java 0.8.1 

את הגרסה החדשה ביותר תוכלו למצוא כאן.

3. הדמיית API

ראשית, נגדיר את Hoverfly כך שיפעל במצב הדמיה. הדרך הפשוטה ביותר להגדיר סימולציה היא באמצעות DSL.

נתחיל בדוגמה פשוטה על ידי הפעלת מיידית של ה- HoverflyRule למשל:

כלל סופי סטטי ציבורי HoverflyRule = HoverflyRule.inSimulationMode (dsl (service ("// www.baeldung.com") .get ("/ api / courses / 1") .willReturn (success (). body (jsonWithSingleQuotes ("{') id ':' 1 ',' name ':' HCI '} "))));

ה SimulationSource הכיתה מספקת א dsl שיטה ליזום הגדרת ה- API. גַם, HoverflyDSLשל שֵׁרוּת השיטה מאפשרת לנו להגדיר נקודת קצה ונתיבי בקשה משויכים.

ואז אנחנו מתקשרים יחזור לציין איזו תגובה אנו רוצים לקבל בתמורה. גם אנחנו השתמשנו הַצלָחָה שיטה של ResponseBuilder כדי לקבוע מעמד תגובה וגוף.

4. שימוש JUnit לבדיקה

ניתן לבדוק את ה- API של Stubbed בקלות באמצעות JUnit.

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

responseEntity courseResponse = restTemplate.getForEntity ("// www.baeldung.com/api/courses/1", String.class); assertEquals (HttpStatus.OK, courseResponse.getStatusCode ()); assertEquals ("{\" id \ ": \" 1 \ ", \" name \ ": \" HCI \ "}", courseResponse.getBody ());

השתמשנו במודולי רשת האביב RestTemplate מופע מחלקה כדי לשלוח בקשת HTTP.

5. הוספת עיכובים

ניתן להוסיף עיכובים ברחבי העולם, עבור שיטת HTTP מסוימת, או עבור שיחת API ספציפית.

הנה עיכוב הגדרת קוד לדוגמא בבקשות בשיטת POST:

SimulationSource.dsl (service ("// www.baeldung.com") .post ("/ api / courses") .willReturn (success ()) .andDelay (3, TimeUnit.SECONDS) .forMethod ("POST"))

6. בקש התאמה

HoverflyMatchers מחלקת המפעל מספקת מספר התאמות כולל התאמה מדוייקת ו globMatch עבור כתובות אתרים. עבור גוף HTTP שהוא מספק.

עבור גופי HTTP הוא מספק JSON / XML התאמה מדויקת ו JSONPath / XPath התאמות.

כברירת מחדל, ה- התאמה מדוייקת התאמה משמשת הן להתאמה בין כתובת אתר והן לגוף.

הנה דוגמה לשימוש בהתאמות שונות:

SimulationSource.dsl (שירות (התאמות ("www. * Dung.com")) .get (startsWith ("/ api / student")) .queryParam ("page", any ()) .willReturn (success ()). post (equalsTo ("/ api / student")) .body (equalsToJson (jsonWithSingleQuotes ("{'id': '1', 'name': 'Joe'}"))) .willReturn (success ()). ("/ api / student / 1") .body (matchesJsonPath ("$. name")) .willReturn (success ()) .post ("/ api / student") .body (equalsToXml ("2John")). willReturn (success ()) .put ("/ api / student / 2") .body (matchesXPath ("/ student / name")). willReturn (success ())); )

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

לאחר מכן מתחיל עם בודק אם נתיב הבקשה מתחיל עם "/api/סטוּדֶנט". השתמשנו כל התאמה כדי לאפשר את כל הערכים האפשריים בפרמטר שאילתת העמודים.

ה שווה ל- ToJson התאמה מוודאת שעומס המטען של הגוף תואם ל- JSON המדויק שניתן כאן. ה משחקים JsonPath שיטה לבדיקת אלמנט בנתיב JSON מסוים קיימת או לא.

בדומה לכך, שווה ל- Toxml תואם את ה- XML ​​שניתן בגוף הבקשה לזה שניתן כאן. ה matchesXPath תואם גוף עם ביטוי XPath.

7. מסקנה

במדריך מהיר זה דנו בשימוש בספריית Java Hoverfly. בדקנו הדמיית שירותי HTTP, DSL לתצורת נקודות קצה, הוספת עיכובים ושימוש בהתאמות בקשות. בדקנו גם לבדוק שירותים אלה באמצעות JUnit.

כמו תמיד, ניתן למצוא קטעי קוד כמו תמיד ב- GitHub.


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