רקע מלפפון

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

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

2. רקע מלפפון

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

אבל איזו בעיה אנחנו מנסים לפתור כאן?

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

חנות ספרים בכיתה ציבורית {ספרים פרטיים ברשימה = ArrayList חדש (); תוסף ספר ריק (public book) {books.add (ספר); } רשימת ספרים ציבורית ByAuthor (מחבר מחרוזת) {return books.stream () .filter (book -> Objects.equals (author, book.getAuthor ())) .collect (Collectors.toList ()); } public אופציונלי bookByTitle (כותרת מחרוזת) {return books.stream () .filter (book -> book.getTitle (). שווה (כותרת)) .findFirst (); }}

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

BookStoreRunSteps {חנות BookStore פרטית; רשימה פרטית נמצאה ספרים; ספר פרטי נמצא ספר; @ לפני setUp הריק הציבורי () {חנות = חנות ספרים חדשה (); foundBooks = ArrayList חדש (); } @Given ("^ יש לי את הספרים הבאים בחנות $") חלל ציבורי haveBooksInTheStore (טבלת נתונים) {רשימה שורות = table.asLists (String.class); עבור (רשימת עמודות: שורות) {store.addBook (ספר חדש (column.get (0), column.get (1))); }} @ When ("^ אני מחפש ספרים מאת מחבר (. +) $") Search public voidForBooksByAuthor (מחבר מחרוזות) {foundBooks = store.booksByAuthor (מחבר); } @ When ("^ אני מחפש ספר שכותרתו (. +) $") Search public void publicForBookByTitle (כותרת מחרוזת) {foundBook = store.bookByTitle (כותרת) .orElse (null); } @Then ("^ אני מוצא (\ d +) ספרים $") חיפושים ציבוריים ריקים (int count) {assertEquals (count, foundBooks.size ()); } @Then ("^ אני מוצא ספר $") פומבי ריק findABook () {assertNotNull (foundBook); } @Then ("^ אני לא מוצא שום ספר $") public public findNoBook () {assertNull (foundBook); }}

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

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

תכונה: חנות ספרים ללא רקע תרחיש: מצא ספרים מאת הסופר בהתחשב שיש לי את הספרים הבאים בחנות | השטן בעיר הלבנה | אריק לארסון | | האריה, המכשפה וארון הבגדים | סי.אס לואיס | | בגן החיות | אריק לארסון | כשאני מחפש ספרים מאת הסופר אריק לארסון ואז אני מוצא שני ספרים תרחיש: מצא ספרים מאת מחבר, אך לא שם בהתחשב בכך שיש לי את הספרים הבאים בחנות | השטן בעיר הלבנה | אריק לארסון | | האריה, המכשפה וארון הבגדים | סי.אס לואיס | | בגן החיות | אריק לארסון | כשאני מחפש ספרים מאת הסופר מרסל פרוסט אז אני מוצא 0 ספרים תרחיש: מצא ספר לפי כותר בהתחשב שיש לי את הספרים הבאים בחנות | השטן בעיר הלבנה | אריק לארסון | | האריה, המכשפה וארון הבגדים | סי.אס לואיס | | בגן החיות | אריק לארסון | כשאני מחפש ספר שכותרתו "האריה, המכשפה וארון הבגדים" ואז אני מוצא ספר תרחיש: מצא ספר לפי שם, אך אין שם בהתחשב בכך שיש לי את הספרים הבאים בחנות | השטן בעיר הלבנה | אריק לארסון | | האריה, המכשפה וארון הבגדים | סי.אס לואיס | | בגן החיות | אריק לארסון | כשאני מחפש ספר שכותרתו Swann's Way אז אני לא מוצא שום ספר

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

3. דוגמא

אז איך ליצור רקע ליצירת החנות עבור תכונה זו? לשם כך עלינו להשתמש במילת המפתח רקע כללי, תן לזה כותרת כמו שאנחנו עושים עבור a תַרחִישׁוהגדר את המשפטים לביצוע:

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

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

תרחיש: מצא ספרים מאת מחבר כשאני מחפש ספרים מאת הסופר אריק לארסון ואז אני מוצא שני ספרים תרחיש: מצא ספרים מאת מחבר, אך אין שם כשאני מחפש ספרים מאת הסופר מרסל פרוסט ואז אני מוצא 0 ספרים תרחיש: מצא ספר לפי כותרת כשאני מחפש ספר שכותרתו "האריה, המכשפה וארון הבגדים" ואז אני מוצא ספר תרחיש: מצא ספר לפי שם, אבל לא נמצא שם כשאני מחפש ספר שכותרתו Swann's Way אז אני לא מוצא שום ספר

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

4. ההבדל עם @לפני

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

5. מסקנה

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

כרגיל, ניתן למצוא את הקוד עבור מאמר זה ב- GitHub.


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