בחינת מבחן אתחול האביב RestTemplate

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

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

2. תלות Maven

להשתמש TestRestTemplate, אתה נדרש לתלות מתאימה כמו:

 org.springframework.boot spring-boot-test 2.2.2.RELEASE 

תוכל למצוא את הגרסה האחרונה ב- Maven Central.

3. TestRestTemplate ו RestTemplate

שני הלקוחות הללו מתאימים למדי לכתיבת מבחני שילוב ויכולים להתמודד עם תקשורת עם ממשקי API של HTTP בצורה טובה מאוד.

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

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

הנה דוגמה פשוטה לבקשה של GET:

TestRestTemplate testRestTemplate = TestRestTemplate חדש (); תגובה ResponseEntity = testRestTemplate. getForEntity (FOO_RESOURCE_URL + "/ 1", String.class); assertThat (response.getStatusCode (), equalTo (HttpStatus.OK));

למרות ששני השיעורים דומים מאוד, TestRestTemplate אינו מאריך RestTemplate ומציע כמה תכונות חדשות ומלהיבות מאוד.

4. מה חדש ב TestRestTemplate?

4.1. קונסטרוקטור עם אישורי אישור בסיסיים

TestRestTemplate מספק קונסטרוקטור איתו אנו יכולים צור תבנית עם אישורים שצוינו לאימות בסיסי.

כל הבקשות המבוצעות באמצעות מופע זה יאומתו באמצעות אישורים שסופקו:

TestRestTemplate testRestTemplate = TestRestTemplate חדש ("משתמש", "passwd"); תגובה ResponseEntity = testRestTemplate. getForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (response.getStatusCode (), equalTo (HttpStatus.OK));

4.2. קונסטרוקטור עם HttpClientOption

TestRestTemplate מאפשר לנו גם להתאים אישית את לקוח Apache HTTP הבסיסי באמצעות HttpClientOption אשר הוא אנומה ב TestRestTemplate עם האפשרויות הבאות: ENABLE_COOKIES, ENABLE_REDIRECTS, ו SSL.

בואו נראה דוגמה מהירה:

TestRestTemplate testRestTemplate = TestRestTemplate חדש ("משתמש", "passwd", TestRestTemplate.HttpClientOption.ENABLE_COOKIES); תגובה ResponseEntity = testRestTemplate. getForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (response.getStatusCode (), equalTo (HttpStatus.OK))

בדוגמה שלעיל אנו משתמשים באפשרויות יחד עם אימות בסיסי.

אם איננו זקוקים לאימות, עדיין נוכל ליצור תבנית עם קונסטרוקטור פשוט:

TestRestTemplate (TestRestTemplate.HttpClientOption.ENABLE_COOKIES)

4.3. שיטה חדשה

לא רק שבונים יכולים ליצור תבנית עם אישורים שצוינו. אנו יכולים להוסיף אישורים גם לאחר יצירת התבנית שלנו. TestRestTemplate נותן לנו שיטה withBasicAuth () שמוסיף אישורים לתבנית קיימת כבר:

TestRestTemplate testRestTemplate = TestRestTemplate חדש (); ResponseEntity response = testRestTemplate.withBasicAuth ("user", "passwd"). GetForEntity (URL_SECURED_BY_AUTHENTICATION, String.class); assertThat (response.getStatusCode (), equalTo (HttpStatus.OK));

5. שימוש בשניהם TestRestTemplate ו RestTemplate

TestRestTemplate יכול לעבוד כעטפת עבור RestTemplate, למשל אם אנו נאלצים להשתמש בו מכיוון שעוסקים בקוד מדור קודם. תוכל לראות להלן כיצד ליצור עטיפה כה פשוטה:

RestTemplateBuilder restTemplateBuilder = RestTemplateBuilder חדש (); restTemplateBuilder.configure (restTemplate); TestRestTemplate testRestTemplate = TestRestTemplate חדש (restTemplateBuilder); תגובה ResponseEntity = testRestTemplate.getForEntity (FOO_RESOURCE_URL + "/ 1", String.class); assertThat (response.getStatusCode (), equalTo (HttpStatus.OK));

6. מסקנה

TestRestTemplate אינו הרחבה של RestTemplate, אלא חלופה המפשטת את בדיקת האינטגרציה ומקלה על האימות במהלך הבדיקות. זה עוזר בהתאמה אישית של לקוח Apache HTTP, אך הוא יכול לשמש כעטפת של RestTemplate.

אתה יכול לבדוק את הדוגמאות המפורטות במאמר זה ב- GitHub.


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