---
title: "TDD Q & A"
url: "https://courses.osherove.com/courses/tdd-in-net-in-hebrew/tdd-q-and-a.md"
canonical: "https://courses.osherove.com/courses/tdd-in-net-in-hebrew/tdd-q-and-a/"
tags: []
author: "Roy Osherove"
description: "Lesson 7 of 22 in TDD in .NET in Hebrew (Day 2 - Mock Objects and TDD), 35:14. Free video by Roy Osherove."
usage: "Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page)."
license: "https://creativecommons.org/licenses/by/4.0/"
---

# TDD Q & A

1. [Courses](https://courses.osherove.com/#courses)
2. [TDD in .NET in Hebrew](https://courses.osherove.com/courses/tdd-in-net-in-hebrew/)
3. Day 2 - Mock Objects and TDD

Lesson 7 of 22

Duration: 35:14 [Watch on YouTube](https://www.youtube.com/watch?v=8H69eQeitro) Spoken in Hebrew

## In this lesson

The second day opens with participants' questions. Roy Osherove suggests adding a command-line step that [runs the tests in the build](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-7#ch07lev1sec1 "Automated builds running automated tests (The Art of Unit Testing, 2nd ed., ch. 7)") and fails it, and on UI testing contrasts recorded WinForms tests with Ruby's Capybara, which can run headless and test JavaScript, while recommending page logic such as validation be extracted into classes that [unit tests](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-1#sigil_toc_id_17 "Defining unit testing, step by step (The Art of Unit Testing, 3rd ed., ch. 1)") cover. He keeps [DateTime.Now](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-7#ch07lev1sec5 "Cross-cutting concerns injection (The Art of Unit Testing, 2nd ed., ch. 7)"), random numbers and threads out of unit tests, gives three ways to test code that ends in storage or a request (abstraction, a [fake](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-4#ch04lev1sec2 "The difference between mocks and stubs (The Art of Unit Testing, 2nd ed., ch. 4)"), or an [integration test](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-1#sigil_toc_id_25 "Integration tests (The Art of Unit Testing, 3rd ed., ch. 1)")), and advises using [mock objects](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-4#sigil_toc_id_76 "Interaction testing, mocks, and stubs (The Art of Unit Testing, 3rd ed., ch. 4)") as little as possible.

## Transcript

5,143 words

[\[00:04\]](https://www.youtube.com/watch?v=8H69eQeitro&t=4s) זה פשוט או לא פשוט? פשוט יחסית פשוט יחסית >> יחסית יותר קלשר >> אוקיי בסדר אני משום מה היה זכור לי שתמיד צריך לערוך איזשהו כן >> אז זה כבר לא פשוט יחסית זה כבר ממש מסוב אני פשוט לא מצליח לקס זה כמו regular אפר עוד תובנות שאלות סעד מין כלכלה שאלות מהיומיים האחרונים מי ניסה לעשות טסים אוקיי, שאלות שעלו לכם במהלך הכתיבה של הטestטים.

[\[00:35\]](https://www.youtube.com/watch?v=8H69eQeitro&t=35s) אם אני אדע את השאלות אז אני אכל לכוון את הקורס קצת יותר טוב לדברים שבאמת נתקעתם. אז באמת התמודדות עם UI בתור חלק מהשלא אם אנחנו אולי זה משהו שנדבר עליו היום. אז אם יש נגיד לוגיקה שבסוף התהליך של אנימציה של UI או איזשהו תהליך כזה שבסופו של דבר אמור להחזיר תשובה שאמור גם להתמודד עם כל מיני סנרז של אינפטים כל כל טריגר כל אלי או משהו כזה >> איזשהו תהליך שזוזר הלוגיקה הפנימית שלו אם אפשר היה לוודא את זה הרי זה טיפה שונה מ אולי האמת אולי זה לא שונה מלכתוב

[\[01:12\]](https://www.youtube.com/watch?v=8H69eQeitro&t=72s) כמה סונריוז באותה פונקציה שלא אם בכלל הם בודקים את זה כי אז דיברת על UI שאולי כבר לא עושים לזה מפי סיימות שם פחות עושים לזה מפי סיימות. >> אוקיי, עוד שאלות? >> אה, שאלה שאני הייתי רוצה זה כאילו איפה הגבול שלו ברמה של איזה לוגיקה אסור לנו להכניס אותו? ניתן דוגמה אחד הטestטים היה לנו אוטנ. Now או time spend from second לדוגמה. האם זה דברים שהם כאילו בסדר להכניס אותם מיוני testing

[\[01:43\]](https://www.youtube.com/watch?v=8H69eQeitro&t=103s) >> להכניס אותם מיוני טestסים או ב >> להכניס להכניס אותם בטסט >> איפה בעצם הגבול של איזה לוגיקה אסור לי להכניס בטסט >> אנחנו נעבור על זה היום ומחר מצוין שאלה מצוינת כן >> אני עושה פה ציף רגע רגע בוא לפני כן אה נראה מה השם תזכירי ס >> אה יכול להיות שנחסה את זה בכתהליכים שנגועים בסטוריג' מה שהתוצאה של אה כאילו איך איך איך תכתוב למשהו שהתוצאה שלו זהage? אוקיי, בסדר.

[\[02:24\]](https://www.youtube.com/watch?v=8H69eQeitro&t=144s) אוקיי, אני רוצה להוסיף סליף לשאלה שלא על day. אם יש לי בקוד שימוש בקבוע, האם בטest אני אשתמש בקבוע או שאני אשתמש במספר? אוקיי כן אנחנו כפים עכשיו כי בתרגול שלנו בעיקר PVD ואבל בפועל אני מניח שנכתוב די הרבה טestסטים לדברים שכבר טובים ואיך איך כדאי

[\[02:54\]](https://www.youtube.com/watch?v=8H69eQeitro&t=174s) לעשות את זה איך די סתם >> בסדר רגע לשח זה אותה שאלה זה מה שעשינו >> מה שתעשה ביחד >> כן >> תחיל אני >> אנחנו ניסים לדון זה רק שכולם יודעים אנחנו נסים לעשות משהו ששולח הודעה פשוט רואה ברקוס תרגיל ורצינו לו ידעוד שהוא נשלח אז רצינו לומין כזה אובייקט שעוטף את ההודעה

[\[03:25\]](https://www.youtube.com/watch?v=8H69eQeitro&t=205s) אבל היינו צריכים גם לעטוף את ה את הלוגיקה שיוצרת את ההודעה ש למצוא את הקלאס שלנו ולא את הקלאס סודעה אמיתית >> כן >> ואז כל דבר שהיו מבצעים על ההודעה עצמה היינו צריכים להטוף דרך כל מיני דרכים עקומות כדי להעביר פרמטרים לקלאס שוטף את ההודעה כדי שהוא יעביר את זה להודעה כדי שנוכל ממנה לשאול אם היא נשלחה זה התחיל להיות מסובך אחרי שאנחנו רוצים לעשות את זה אז מה השאלה >> השאלה היא מה הדרכים הם יש עכשיו לוגיקה בתוך לוגיקה אנחנו רוצים לבדוק וזה לא כזה מסובך לשלוח עוד יש לך סך הכל קלאס שמשתמש בפ >> כן >> לעשות כאילו

[\[04:01\]](https://www.youtube.com/watch?v=8H69eQeitro&t=241s) מה הד הכי מהירה שאפשר לעשות את זה לא ליצור מחדש את כל האובייקטים גם את הקלאס גם את ההודעה גם את התשובה שלה לחשוב מה הקטגוריה של השאלה הזאת אב אני לא יודע and testש לשאלה ההתחלתית אוקיי יתן לנו את ההתחלה של השתשובה כן עוד שאלות אה אני צרה כאילו רק

[\[04:32\]](https://www.youtube.com/watch?v=8H69eQeitro&t=272s) לנסח את ספ במינים שלי אני פשוט מרגיש שקראו לנו שם שני דברים אחד בגלל שאנחנו עדיין לא מסודרים עד הסוף עם התשתית מוקינג שלנו שלא רוצה להיות טייפק >> אז נאלצנו לעשות כבר אוכל >> כן אוקיי אז נאלצנו לעשות hand stff וזה היה הסבל שחבינו ביחד שהצורך לעשות כאילו לכתוב את ההנטן ואז כאילו כש כשאתה כותב [מוק](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-4 "Interaction testing using mock objects (The Art of Unit Testing, 2nd ed., ch. 4)") שהוא אין אז זה פשוט כאילו עבודה יותר קשה לעשות את הסרטים >> אנחנו ניכנס למוקים היום אז אני חושב שלרוב האנשים עדיין יש יחסית מושג חלש יחסית על מושג של מוקינג מול סטאפינג פיגי אז זה היה סבל אחד הנקודה השנייה שזה מה שאתה כתבת וזה מה שאני רציתי לשאול מה פשוט הביס prctices לדוק

[\[05:22\]](https://www.youtube.com/watch?v=8H69eQeitro&t=322s) שמש לבדוק תקשורת לבדוק שכש לשלוח משהו איך אתה כאילו בודק שמשהו הגיע לצד השני מה יותר נכון האם אם נכון להשקיע את הזמן שלך בבדיקה שהיא באמת עושה את האינטגרשן או שיותר נכון לעשות את זה isolatד או גם וגם אוקיי מה גרום לך להרגיש רגוע למחד מהסוג הזה בסדר עוד שאלות >> אוקיי אז כן >> דברים הסילכרונים כאילו איך תקן דוגמה למשהו ספציפי שהתר >> לצורך הם בקשה שאני שולח ואני מקבל תשובה מצלת מה התשובה שהייתה לדוגמה >> אוקיי

[\[06:09\]](https://www.youtube.com/watch?v=8H69eQeitro&t=369s) >> כן אוקיי >> כן עוד דברים אוקיי מאנשים שניסו לכתוב יוני testingים מי הצליח לכתוב לפחות טestט אחד שהוא הרגיש בסדר איתו אחלה מי מצא באג במשהו מצאת >> מצאתם בגה מצאתם בג צנופ ש מייצרת מ מ מ מ מדייט היא מייצרת כמה זמן עבר איזשהו סטרינטר ו שאנחנו שמשים באיזה כל שיש בדה נקוד סינה אנחנו ישים באיזשהו

[\[06:42\]](https://www.youtube.com/watch?v=8H69eQeitro&t=402s) איזשהו קלאס שנקרא טים שנותן לנו סנ פחות איזשהו דלטא מסתבר שהוא לא נותן את הוא לא מתייחס לך השנה השנה של המזק 1 סוג של פעם בחיים לא תקבל זה ניסית למצוא את זה ביחד >> כן >> אחה מה איזה באג אתה מצאת את היד של >> לא לא אני סתם ירוד >> אני >> כן >> אני לא זוכר אבל הבאתי קצת השבוע שבנו טestטים

[\[07:12\]](https://www.youtube.com/watch?v=8H69eQeitro&t=432s) בתוך העניין במה מצאת באגים לגמור אני לא זוכר מה עשית צ אוקי מישהו עוד מצב בג שהרוצה ספר עליו אוקיי מי כתב את ולא כאילו שבסדר את זה על מה >> מה שעשינו ביחד על הרqu >> כן אני לא זוכר שזה בקשה נראה לי אומר שכן כן אני לא זוכר >> בסדר מי ניסה לכתוב טסים ולא הצליח כי זה היה מסובך מדי על מה ניסה לכתוב טסטים על הפריורק שאני לכתוב יש לי פריימורק שעשה אוטומציה לוב

[\[07:51\]](https://www.youtube.com/watch?v=8H69eQeitro&t=471s) לא היה לי מושג גם איך להתחיל את אז רציתי לכתוב את הספים פשוט מה בסדר שלחתי לליד אימייל שלשון וקיצאתי לו שכל אחד ינסה לכתוב איזה טestט אחד או שניים אבל לבחור משהו פשוט לא משהו שמעבר לרמת הידע שכבר עברנו עליה אלא משהו שהוא איזשהו הלפר מוד משהו עם אינפוטים ואטפוטים הנושא של הזמן יכול להיות דוגמה טובה לזה אמ אני ממליץ לא אוטומטית לקפוץ למשהו שאולי אף פעם לא ניסיתם לעשות אלא ללכת לדברים שבאמת נראים לכם פשוטים ולראות שאתם מצליחים לכתוב לזה test אחד ושני אין שום בעיה שתכתבו את זה בMS test עם הנטוסation שלכם כרגע לא יודע להריץ את זה

[\[08:32\]](https://www.youtube.com/watch?v=8H69eQeitro&t=512s) דרך אגב כדי להריץ את הטestים של [NUnit](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-2#ch02lev1sec3 "First steps with NUnit (The Art of Unit Testing, 2nd ed., ch. 2)") בתוך ה אטס ים שטס בטבילד נכון אז אני ממליץ בחום אחרי הקורס הזה זאת אומרת ממש היום להוסיף איזה פקודת אקute קטנה של קומנדל line שמריצה את הITexe וזה מחזיר אפס או מינוס אחד אם זה נכשל ואז זה מכשיר את הבילד הבילד אוטומטית נכשל כשמשהו מחזיר מינוס אחד הקומנדס אז אמור להיות מאוד פשוט תוסיפו את זה כדי שיהיה לכם פידק אבית כדי שתרגישו שהטestטים שהוספתם באמת נכנסים והם לא סתם חיים באיזשהו

[\[09:08\]](https://www.youtube.com/watch?v=8H69eQeitro&t=548s) בסדר הפידבק הזה מאוד חשוב בחירה פסיכולוגית אתה רוצה לוודא שמה שעשית באמת משפיע על משהו אחרת אתה סתם מרגיש שאתה עושה משהו זורק את זה לחור שחור וזה נעלם אז הפק הזה מאוד חשוב אמ אם תצטרכו עזר סח ח זה מניין כשרטestטים לקח שהוא בובלפ לקח המון זמן עד ש כל פעם תתקמפל ועד שבתם הטסט רץ כאילו זה מאוד לא היה באמת אה

[\[09:39\]](https://www.youtube.com/watch?v=8H69eQeitro&t=579s) טסט כזהטי אם הים כמה אני בטוח שלוקח הרבה יותר זמן אפילו לא היה בוב זה היה גיל כן אבל כן >> בסדר אז זה אולי גם ספציפ גם כילו כאילו האם לעשות proקט כאילו [unit testing](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-1#ch01lev1sec1 "Defining unit testing, step by step (The Art of Unit Testing, 2nd ed., ch. 1)") per solution או קמה או תחום לוגי או משהו כזה בסלו של נפתח בשביל >> בזה אני אומר אם נגיד היה אולי להביא זו השאלה בעצם האם נגיד לעשות לכל פרויקט או לכל חלק בעצם ה כי הבעיה היא שהפרויקט של היוטestי הוא כללי לכל לסולושן מאוד גדול >> כן אוקיי אז נדבר על זה צוד

[\[10:20\]](https://www.youtube.com/watch?v=8H69eQeitro&t=620s) שאלות זה הזמן זמן אם אם לא תשאלו את זה פה אז רק ביום ראשון אני אחזור צריך לעשות קונסלטינג באמת ונוכל לשבת אחד את אחד אבל אם אתם צריכים לשאול שאלה שאנחנו מים שאחרים גם יהנו מהתשובה אז זה פורם טוב לשאול את זה >> מה המספרים הזוכים בלטו שאלה >> עוד שאלה לגבי כאילו איך עושים UI >> אה יש

[\[10:53\]](https://www.youtube.com/watch?v=8H69eQeitro&t=653s) >> בסדר מה טוב אז בואו נתחיל דווקא מui אחד ה ככה כשאני התחלתי את הנושא של UI testing גם פשוט בעולם של winפs עכשיו בונפורס אין אין מה לנסות אפילו זה פשוט עולם שכל הטestטים או שעושים נגיד רקורד ואז מפעילים משהו שלוחץ על כפתורים ומייצר סקריפט אחרי זה זה פשוט מייצר טestטים שהם מבחינתity ממש ממש גרוע אחרי שבוע משהו משתנה ואתה צריך לשנות את כל הטestטים או להקליט מחדש זה מהר מאוד מאבד מהערך שלו.

[\[11:26\]](https://www.youtube.com/watch?v=8H69eQeitro&t=686s) מצד שני השנתיים האחרונות בעולם הרובי לימדו אותי כמה דברים לגבי testing שהם מאוד מאוד חזקים אז מה שלמדתי שדוגמה UI Web testing זה משהו שכן אפשרי לעשות והוא יחסית היום ממפנימים כמוסלניום פלוספטום js אוקאי ברה אם אתם עובדים עם רובי ואתם יכולים לעבוד דרך אגב עם רובי על ווינדוס שעדיין בודק את הקוד שלכם אין שום מניעה יהיה לכם כלים הרבה יותר חזקים מאשר סדני היום ברובי יש כלי שנקרא קאפי קפיברה קפיברה

[\[11:58\]](https://www.youtube.com/watch?v=8H69eQeitro&t=718s) נכתוב את זה קפיברה זה סוג של חיה קטנה דרך אגב וקפיברה זה פרויקט שהתחיל במקביל סלניום ואז בשלב מסוים סלניום וקפיברה התאחדו לסור סקו אחד הוא משלב את היכולות של סלניום עם עוד כל מיני יכולות מדליקות הAPI שלו ד ממש ממש חזק אבל אחד הדברים הימים שהוא מאפשר זה לא רק לעשות אותו פורמציה של הבראוזר ולבחוק שדברים קורים הוא גם מאפשר לך לבדוק ג'אבסקריפט אבל הוא לא מחייב

[\[12:32\]](https://www.youtube.com/watch?v=8H69eQeitro&t=752s) זאת אומרת הוא יכול לרוץ headless בלי בראוזר בכלל בלי UI בקנדלי line על איזשהו סרבר איפשהו ועדיין הוא יודע לדמות ג'אבסקריפט כי הוא משתמש בן השר בספריות של Node.js כדי לדמות את הנושא של הג'אסקריפט אנ ואפשר לעשות טestטים ממש חזקים ויצא לי לעשות כמה טestטים שלוב ממש חזקים עם קפיברה וזה פתרון לא רע בכלל כי מה שקורה שבמקום לחפש דברים בUI אז מחפשים דברים בHTML תחשבו על זה כמו jQuery שמחפש דברים עם ID הIDז בדרך כלל לא משתלים ואז המיקום גם לא משנה דברים שרצים בג'אסקריפט אז נותנים שמות נורמליים לפונקציות והם לא משתנות לפחות הפונקציות שהםפליק

[\[13:12\]](https://www.youtube.com/watch?v=8H69eQeitro&t=792s) לקבל requוס ולבדוק שמשהו enable או לא enable אז זה יחסית מאוד פשוט לבדוק את הדברים האלה וטestטים שרסים בג'אבסקריפט פשוט שמים להם כמעט סוג של אטריביוט על השם של הטest ואומרים שהוא aing שלא הסנך שהוא JS enable ואז הטest הזה רץ בלי בראוזר בכלל. הטestטים בעיקרון אפשר הטestטים יכולים לרוץ עם ברזר ואז ממש תראו את הפעולות. אתם יכולים להגיד הטest הזה רץ בלי בראוזר. אז אפשר לעשות את כל הפעולות האלה. בעולם של הרוב אני חושב שגם בעולם של הפייטן למרות ששם יש לי פחות ניסיון.

[\[13:44\]](https://www.youtube.com/watch?v=8H69eQeitro&t=824s) הנושא של weוב testing הוא הרבה יותר מתקדם מאשר בעולם של הווינדוס כרגע. אבל מה שחזק מאוד זה שמייקרוסופט לאחרונה התחילה להיכנס נורא חזק לעולם האפen זאת אומרת להתקין Node.js היום על מכונת ווינדוס זה אחד הדברים הכי קלים שיש שזה כבר יותר קל להתקין Node.js מאשר היום על על ווינדוס להתקין רובי זה גם זה פעולה ש פשוט פעולה אחת ואפילו אין אפילו נקסט ללחוץ אז ללמוד את הכלים האלה ללמוד את הסקillילס החדשים האלה יכול לקחת אתכם למקומות חדשים לגב של קונקטיity בטestי אבל זה testing.

[\[14:21\]](https://www.youtube.com/watch?v=8H69eQeitro&t=861s) אחד הדברים היפים שגיליתי שכשעושים testing לוב הרבה פעמים בודקים כל כך הרבה דברים דלי שהרבה צורך מוטitט testing יורד. עכשיו זה לא דבר רע שהצורך בניטestינג יורד אבל צריך תמיד איזשהו סוג של שילוב. הוIT testting נותן פידבק מהיר. Testing נותן פידבק מאוד איטי. אינטגרש testing בדרך כלל מריצים בניn buildד ואז הפידבק שאתה מקבל יכול לקחת שעה יכול לקחת גם 24 שעות. ולכן יש מקום חשוב מאוד לunit tests אבל הטגרation testing לפעמים בעיקר הנושא של הג'אבסקריפט בUI מאוד מאוד חשוב

[\[14:54\]](https://www.youtube.com/watch?v=8H69eQeitro&t=894s) אבל יש עוד סוג של לוגיקה בUI אם הלוגיקה שלכם היא ברמת הדף לדוגמה validationש שצריך לבדוק 17 סוגים של ולידציה אפשר לבדוק את זה באינטגרש test אבל הרבה יותר פשוט לעשות אקסטרctט ללוגיקה לקס נפרד ממש לקלס לא אתם ישירות לזה ממש לעשות אבסטרקטור לבדוק את השכבה ממש מתח תחת לui וזה גם משהו שגיליתי שמאוד מאוד עוזר זאת אומרת שהUI בסך הכל משתמש בקלאסים שיש להם רק הכי Simple return values ואת הקלאסים האלה אנחנו testing והם תסים הטestטים האלה זה מאוד חשוב כי בעיקר בדברים האלה שיש לך 100 סוגים של בדיקות כדי לעשות לראות שמשהו באמת ולידי אה סם הדברים האלה הם נותנים המון המון ערך לכתוב אינטגרש טest זה עדיין יחסית מסובך זאת אומרת מסובך לדוג שהטest שכתבת הוא נכון ולהריץ אותו לוקח זמן זה עדיין לוקח יותר זמן שלריסט testים

[\[15:51\]](https://www.youtube.com/watch?v=8H69eQeitro&t=951s) יש יתרון הפידבק המיידי של יוני testingים אפילו אם הוא לא לטווח ארוך אם הוא קשה לתחזק אותו אז רק בשביל לבדוק סנריוז ו ולעזור לך בכתיבה השוטפת ואחרי זה אפילו אם אם אם הוא לא מתקמפל אם יש לי תו איזה בעיה לזרוק אותו אחרי זה >> אפשר אפשר לזרוק את אחרי זה אני אני חושב ש >> זה ממש ממש חבל לזרוק לא ברור ולכן לא הייתי עושה משהו שהייתי יודע שאני עומד לזרוק אותו אלא אלא אם כן הייתי יודע שמה שאני עובד עליו זה זה משהו שזה בסדר אחרי זה לזרוק את הפודקש עוד כי מה הבעיה עם זה שאתם זורקים טestטים זה שאתם לא יודעים אחרי זה אם תשברו את זה עוד חצי שנה איך תדע ששברת את הלוגיקה הזאת אז זה כמו הקבות בחול ים אתם צריכים לדעת מאיפה באתם כדי לוודא שכל הדברים בדרך עוברים אז אם אתם מוחקים את העקבות האלה אתם לעולם לא תגידו אם בדעתם את זה וטחו לכתוב את זה עוד פעם או ש פשוט לא תפת תגחו בטסטים שלכם אז בדרך כלל אני אנסה לא למחוק שום טסט אחרי שהוא כבר עובר בסדר ואז ואז מה שאני

[\[16:51\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1011s) חושב מה שאני עושה לעשות זה לבד שהוא מי טנבל בדרך כלל אם עושים אבסטרקציה מהui ולא בודקים את הui בכלל כיוט אז הטסטים די מט אבל זה לא כזה בגדי בסדר דברים שלא כדאי לכתוב בטסטים זה אנחנו נדבר יהיה לנו סשן שלם על best prtic אבל דוגמה dayט time now אני בדרך כלל זה סוג הדברים שאני לא כותב בesting כי מה שאני עושה זה שטestים שטestים יהיו consistent שטtest כשהוא רץ ועובר הוא תמיד יהיה אותו test אם אני משמש בדdיים now בטest שלי אז כל פעם שאני מריץ אותו זה טסט אחר שט שאלה עוד פעם לגבי הUS שאני מחזיר אותך אחורה >>

[\[17:33\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1053s) השאלה הייתה כאילו האם נכון הולך לעשות בדיקות לui אבל אולי צריך לשאל את זה אחרת כאילו לא מעניין אותי לעשות אוטומציה לאui אני רוצה לפנות את הפונקציות בקוד ב נקרא לזה או בג'אבסקריפט >> כן >> ואני מצפה שיש >> יש יש קוד ויש ג'אבסקריפט חשוב מאוד להפריד ביניהם >> אוקיי סבבה תייחס כרגע לקוד בינדס כאילו אבל >> סבבה אז אני יכול לעשות טestטים שפשוט מפעילים את הפונקציה של הבטנו קליק אובר ואני מצפה לראות האם מפעילים את הבטון נקודה enableד

[\[18:04\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1084s) כאילו זה לא בדיקת UI זה בדיקה של הקוד שלי של הלוגיקה של הקוד >> נכון >> לא לא טוב כאילו לא כדאי לעשות את הטestטים האלה >> אפשר לעשות את הטestטים האלה ואני צריך להבין כן ש יש סוג של overפification מה זה overפication שאתה בודק את הדרך שבה משהו נעשה ולא את התוצאה הסופית אז אני אתן לך דוגמה הפעלת פונקציה בג'אבסקריפט ובדקתי שהיא קוראת לפונקציה אחרת בג'אבסקריפט האם בסופו של דבר זה אומר שהיוזר יראה שיש כפתור לא בהכרח זה שהפונקציה היא נקראה זה לא אומר שהכפתור באמת שם אולי הפונקציה נקראת אבל אולי אבל אולי היא מפעילה את הכפתור הלא נכון

[\[18:40\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1120s) מכוון קנה לגבי דברים שהם בקוד בינ אם אני אם בסופו של דבר הפונקציה צריכה להשפיע על הI אין שום תחליף לאנגרation testing למה לא יכול לעשות כאילו כמו סוג של מוק על הבטן נגיד כן אבל אין תחליף לאינטגרש testing ברמה כזאת שאתה יודע שאפשר לעשות פעולה מההתחלה מאיפה שאני משתמש רואה את זה אין שום תחליף לזה כי לפעמים הטestטים יכולים לשקר >> אבל התוצאה יכולה להיות שנגיד אין אקספtion או שיש אקספtion זה גם יכול להיות איזשהו שלב זה לא אומר שאין ערך זה אבל אתה צריך להיזהר ולא אתה לא יכול שיהיו לך רק יופי טס בוא נני כיסית את כל הפרויקט שלך בטסטים כאלה לא הייתי אומר שהייתי סומך על הטestטים האלה שבאמת הדבר הזה עובד הייתי עושה אטגרש testing כדי לדוד

[\[19:27\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1167s) מה >> זה נכון לגבי כל unit test >> נכון אבל יש unit testים שהם של framewורקים ואין להם בכלל ui שם אין לך מה לבדוקation testם כן הם שומרים לדatס יכול test שעובד עםס אבל יש ui שבו אתה אומר האם משתמש רגיל יכול להפעיל בכלל את הפונקציונליות ולעשות את הפעולה שהוא היה אמור לעשות אז שניים שלושה אטגרש test על 100 testים זה לא דבר רע עדיין צריך אותם בסדר אז כן יכול להיות שהייתי כותב את הטestטים לכל הלוגה ועושה אבסטרקציה ועושה [פייק](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-4#ch04lev1sec2 "The difference between mocks and stubs (The Art of Unit Testing, 2nd ed., ch. 4)") שבאמת קראו לכפתור ושעשו לו enable אבל בסופו של דבר אין תחליף את הדבר הזה בסדר

[\[20:05\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1205s) ולכן אני ולכן הרבה פעמים בפliקש הערך הכי גדול שהסדתי זה שאני יכול לעשות אט TO סנריו להתחיל ממנו והסנריו הבסיסי עובד ואז אני מתחיל למלא עוד פונקציונטות עם הרבה יני testingים אבל בדרך אני מוטא שלא שברתי את הN פונקציונליות של הזר הוא עדיין יכול לעשות לוגין אוקיי עכשיו בזמן שהוא עושה לוגין מה מופיע האם הזה של הטוויטר מופיע האם הזה של הפה מופיע האם הזה enable כשזה לא enable אבל אבל הנסר פתאום הדף לא עולה בגלל שהמפינס

[\[20:40\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1240s) של הקונפיגורציה לא אוקיי הכל יכול לקרות אתה לא יודע מישהו בא ועשה קומיט למשהו בקונפיגורציה מלפני חודשיים אז עשה שום יוניטסט לא לא יבדוק את זה בסדר אני רוצה להציע לד עוד משהו כי היה לנו כן באגים ש שיונית היה אמור לעלות עליהם אם אנחנו נפריד את השכבת UI ל למינימום אז כאילו שכבת צריכה להיות מינימלית

[\[21:11\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1271s) חשוב מאוד שלא יהיה לוגיקה בUI אם יש לוגיקה בUI ברמה של ג'אבסקריפט עדיין אפשר לזוק את זה בג'אסריפט frameס כמו גזמי אבל אין תחליף לאינטגרש test המלא שהוא אומר שאפשר אני חובר ואני עונה והדף הזה עולה והדף הבא עולה בסדר והנושא של איזה טestטים כן יכולת לדוג וזה דברים אולי שנראה שבוע הבא אני אשמח להסתכל על זה אמ אמ אוקיי אז דברים ש שאני מנסה להימנע מהם בטestטים ואנחנו נעשה הרצאה שלמה על זה אז אני לא אתנס לזה יותר מדי עבור עכשיו אבל בעיקרון אני מנסה שהטestטים יהיו קונסיסטנטים

[\[21:51\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1311s) זה אומר שאם הטestט הזה רץ עכשיו עם עם די ט time מסוים אז הוא תמיד ירוצץ עם הדיט time הזה בגלל שאם הוא רס עם time now אז כל פעם שהוא רץ זה בעצם testט אחר והאם יהיה לי באג יהיה לי מאוד קשה לשחזר אותו ואני רוצה שהטest יהיה consיסטנטי זה לאation test ination test אני יכול שיהיה לי ‏numberation test אני רוצה שיהיה לי rדom number אולי אבל בניט test אני לא רוצה rדום number אני רוצה שכל פעם אני אבדוק עם המספר הזה במטרה שלי לא לדוד שהכל עובד אלא להוכיח את הסקיס הבסיסי ביותר הספציפי ביותר שאומר הזקיס הזה מוכח כעובד כי המטרה היא לעשות פונקציונליות שעובדת

[\[22:27\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1347s) Testים לא אמורים לכסות את כל הפונקציוני שלא חשבנו עליה הם אמורים לתת לנו איזשהו עמוד שדרה של האפליקציה שאנחנו יודעים שעובד לבנות את העמוד שדרה הזה ואחרי זה למלא את כל הדברים מסביב עם אגרש test ורange וכל הדברים האלה אבל המטרה היא לבנות את העמוד של דר חוליה אחרי חוליה שיהיה לי שלט בסוף שאני יכול להראות למישהו לעשות דמו בסדר עוד דברים באותה מידה גם טרדים ודברים מהסינכרונים אני לא מריץ ביוני testing כי שתהיה לי שליטה על כל הדברים שאני שאני בודק הוIT work שלי צריך להיות infול זאת אומרת להריץ frרדים אין לי שליטה על פרדים אני צריך להרוג אותם אני לא יודע כמה זמן הטסט יקח

[\[23:07\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1387s) ולכן כל הוטסים מתבצאים בפרד אחד מבחינתי testing לסטור ending storage זה בעצם אחד מהשלושה end resultלs אתם זוכרים מה מה השלושה end resultלs שיכול להיות work מישהו זוכר exception אבל מה זה exception זה אחד מה עוד יש [state change](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-2#ch02lev1sec7 "Testing results that are system state changes instead of return values (The Art of Unit Testing, 2nd ed., ch. 2)") party עכשיו אם אני בודק שמשהו נגמר בסטור אז אני בודק state change כי אני כי זה שזה נגמר בסטורג זה אומר שמשהו משתנה

[\[23:44\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1424s) אם זה משנה את הסט של האפליקציה שלי אני יכול לבדוק משהו שנגמר בסטורage זה אמנם יהיה test זה לא unit test כי מבחינתי unit test ששומר דברים לפיילסטם ולדataביס זה כבר לא unit test יקח יותר זמן אוך קונפיגורציה זה לא דבר רע אבל לא הייתי שם אותו בפרויקטים שנקראים unit testס עכשיו הייתי עושה אגרation test ששומרים דברים לסטורage בגלל שבדרך כללסטורג זה סוג של דטבס ואז אני רוצה לוודא שאני יכול לעבוד עם הסטורג שהקונפיגורציות עוזות שהכל עובד גם סטורג לפעמים יכול להיות לוגיקה

[\[24:15\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1455s) אבל אני גם יכול אם נורא נורא מסובך לכתוב את סטורג לדוגמה אני כותב משהו שאמור לשלוח מיילים ולקצch serverבר אז להשתמש בסטורage בטestים שלי יכול לקחת המון זמן רק להרים את האchבר בצורה אוטומטית יכול לקחת המון המון זמן לדמות דברים בסטורage יכול לקחת המון זמן איך אני בודק שמשהו מנסה להישמר לסטורג' אבל אין מקום בסטורג' איך מדמה דבר כזה בכלל? כמעט ביטי אפשרי אלא אם כן הטסטים שלכם יקחו שעה וחצי וימלאו את כל הסטורג' במשהו אז יש דברים שאינטגרש test זה בסדר גמור אבל יש דברים שאתה לא יכול להתעמוד בכלל בנגרש test מה קורה אם בסטורage יש כבר את היו value המסוים הזה מה קורה אם כבר אין מקום מה קורה עם out of mורy וכולי וכולי במקרים כאלה אנחנו מתייחסים לסטורage כדd partטy במקרים שבהם אנחנו לא יכולים לשלוט עליו כדי לבדוק

[\[25:04\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1504s) אז זה הופך במקום state test לthד party אנחנו בודקים שמישהו הוא קרע לדבר הזה שנראה כמו סטור מי ש את השאלה כן אז אני לא יודע אם זה עונה לך זה לא זה עונה לך על שאלה אה פחות בהתחלה כאילו כי יותר קיבלתי ליוני testing למדוק כאילו כאילו אני יודע אני מבין שאפשר לעשות את זה בנגרש test אבל >> אבל תסביר לי מה אתה אומר כשאתה אומרסטורage אז הוא סטורגד

[\[25:36\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1536s) >> אזור סטורג אבל לא מעניין אותי כל כך שזה נכנס לסטוריג' מעניין אותי שזה יצא ומעניין אותי שיצרתי אובייקט נכון שהולך להיכנס לסטוריג' >> לא כל כך מעניין אותי שהוא שהוא באמת בסטורי אז יכול להיות שזה יותר מוק מדברי >> אזו עכשיו ברגע להגיד מוק וכל הדברים האלה how to wr test at end in storage זה אומר איך לבדוק משהו שנגמר בסטורג אז חות שהנה שלי שיש לי אני יש לי לוגיקה גדולה >> יש לי לוגיקה שמייצרת איזשהו אובייקט בסוף כותב סטורג אז האטפוט הוא באמת אני לא מקבל אפוט כשאני קורא לפונקציה הזאת כי כותב הסטורי >> אוקיי >> אבל אני רוצה לבדוק שמה שאני כותב בסטוריג נכון שהיצרתי את האובייקט הנכון >> עכשיו אני אומר בפיזולוגיקה

[\[26:16\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1576s) אז זה שוב שכבה של אבסטרקציה >> אפשר לעשות שכבה של אבסטרקציה שאומרת תייצר לי את האובייקט ואז תבדוק את כל הפרטי של האובייקט לפני שאתה שולוגע את כל הסטורג אז אתה גם יכול לעשות פייק לסטורage ואומר אני אני הסטורג שלך תשלח לי את הדבר הזה ואז אבדוק את זה בטestטים זה אחד הדברים שאני עומד לעשות אפשר גם לעשות test שאומר תשמור על סטורג ואז תעשה גט מהסטורג ושיראה שאתה מקבל את הדבר הנכון. כל הדברים האלה הם אפשריים. זאת אומרת או אבסטרקציה והחלפה או אבסטרקציה לגבי זה שבכלל לא צטריך לשלוח לסטורג בטest שלך.

[\[26:48\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1608s) אומרת תעשה make לאובייקט שממלא את החוקים האלה כי זה סוג של הלפרד ואז יש לך בעצם אתה בודק return value הפכת את הtest ל return val test שאתה עושה [fake](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-5#ch05lev1sec2 "Dynamically creating a fake object (The Art of Unit Testing, 2nd ed., ch. 5)") הסטורage ואז הופך לf partטy test וא אומר תשלח את זה לסטורage ותבדוק שהדבר הזה שנראה כמו סטורג' שקיבל את הדבר הנכון או שתעשה אטגרration test וזה בעצם נהיה state תשלח את זה ותבדוק שאתה יכול לעשות גטג זה בעצם הפעולה שאתה אומר וואלה אני יכול לעשות גט אחרי שעשיתי

[\[27:19\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1639s) בסדר אז כל אז אז יש שלוש דרכים לעשות את זה ליוטesting בדרך כלל אבסטרקציה זה הדבר הראשון שהייתי מנסה אבל צריך לזכור ופה עוד פעם צריך להיות מאוד מאוד צריך מאוד להיזהר זה שאני מייצר את האובייקט נכון לא אומר שאני באמת שולח אותו לדataביס בצורה נכונה זאת אומרת הייתי בודק את האובייקט הזה שהוא יוצר אבל לא הייתי מוותר על integraation test באיזשהיא צורה אם אתם עובדים עם דברים כמו הזור הזורס סטורג'

[\[27:49\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1669s) הPI האלה משתנים כל הזמן מחר מייקרוסופט משנה גרסה ויש איזשהו באג ופתאום אי אפשר לשמור לעזור סטורג אתם רוצים לגלות את זה כמה שיותר מהר חייב להיות לכם אינטגרשט test שרץ ואומר אני יכול לשמור דברים לסטורage בסדר בלי קשר בכלל לכל היוני testingים אני צריך לבדוק שend to end אני יכול לייצר אובייקט ולשמור אותו לעזור סטורג ולקבל אותו חזרה זה סוג של test לוודא שהמערכת בכלל עובדת שאני יכול להריץ דברים בפייפלין בסדר אה דוגמאות את הדברים זה הרבה פעמים שאני יוצר אפליקציות

[\[28:19\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1699s) אני כותב טestטים שאני יכול להריץ בקליינסי זאת אומרת אם האפליקציה היאסמרטליין כלשהו אני בודק בסמרטליין שיש לי את הall dirקטורory כל הdependencies ושאני יכול אצלי להעביר להריץ את כל הIT testים וגם אני יכול לשמור דברים לדataביס הלוקלי אם זה esq או דברים כאלה ואם זה [integration test](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-1#ch01lev1sec3 "Integration tests (The Art of Unit Testing, 2nd ed., ch. 1)") תמיד יש לי איזשהו לא stageing אלא testver שנראה כמו סטיג'ing serverבר ועליו יש לי שניים שלושה משתמשים שאני יכול לדמות עליהם את כל העבודה

[\[28:51\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1731s) ואז כל לילה אם לא כל שעה יש לי תמיד איזשהו פרoס מגביל שרץ ואומר כן אתה עדיין יכול לשמור דברים הכל בסדר מין ירוק כזה פשוט ירוק לוודא שהפייפלין שלי נקי והוא לא חסום בשום דבר קונפיגורציות עובדות בסדר אמ לגס קוד אנחנו נדבר בעיקר על הלגסי קוד גם לקראת סוף היום היום וגם הרבה מחר אז

[\[29:23\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1763s) אין לי כל כך מה להיכנס לזה בגלל שזה פשוט זה יסבך אותנו עוד יותר עכשיו איך לב לשלוח recquוס ולבדוק שהוא נשלח אז עוד פעם זה אותו דבר כמו סטורג' אני יש לי שלוש דרכים לעשות את זה או לעשות אבסטרקציה לדבר הזה ששולח את הרquוס ולבדוק שהרquס שנוצר הוא נכון כל הפרטיז מה שזה לא יהיה או לשלוח את זה למשהו שנראה כמו המקום שאמור לקבל את הרqu זאת אומרת לדמות את הhtpסבר ברמה מסוימת או לעשות interpration test ולעשות בעצם state change להגיד אני שלחתי את הrequest עכשיו אני יכול לעשות עוד request ולקבל רפונס אחר

[\[29:59\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1799s) בסדר אז אין פה הרבה זה תמיד השלוש אפשרויות האלה איזשהו סוג של אבסטרקציה או fake אוטגרש test אז אין לך בעיה יש לך באמת לוגיקה אני שתמד ‏H http server יכול להיות שתשנה משהו בצד של הסרבר והטest יעבור אבל זה לא יור נכון זה אחד הדברים שאנחנו נלמד היום זה שכשאנחנו מדברים על קס ופיקס וכל הדברים האלה אלה הטestטים שהם הכי פחות הכי פחות מטable אני מנסה להשתמש במוק objects כמה שפחות בטestטים שלי זה אלה הטestטים הכי מסוכנים והכי מסובכים

[\[30:33\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1833s) והסיבה שהם שהם מסוכנים זה בגלל שהטבילי שלהם מסתמך על איזשהוטל במערכת זאת אומרת אם אני כבר עושה פיק למשהו אני מוודא שהמשהו הזה יש לו API כמה שיותר קטן אם אני עושה פייק למשהו עם API מאוד מאוד גדול אז א' זה נורא מסובך לעשות זה גם נורא קשה לקרוא וגם הסיכוי שזה ישתנה בעתיד הוא הרבה יותר גדול ככל שהpi יותר קטן אז אני עושה אפילו אבסטרקציה לapi לAPI עם פונקציה אחת ואז לזה אני עושה פי כדי שהטסט שלי יהיה יותר קרי ויותר פשוט

[\[31:03\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1863s) ואז אני לא מסתמך על זה שמחר הזה ישתנה כי יש לי אבסטרקציה משלי שאני שולט עליה על החלוטין אוקיי אז כל הנושא של מobs וכולי אלה הטestטים שאם יש לכם יותר מ-5% מהטestטים שיש להם obקס אז יכול להיות שאתם אתם עושים לזה בדרך כלל testים אני אוהב שהם או resultל based או state bas זאת אומרת אני מעדיף לבדוק הכל בזיכרון ולבדוק שמשהו עבר גם 17 קלאסים ואני יכול לקבל חזרת הרי resultלט ושהטestטים האלה יחזיקו מעמד הרבה יותר זמן מאשר הטestטים עם obקס

[\[31:36\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1896s) עכשיו זה לא הכל כזה זה שחור. הרבה מהפריורקים היום מנסים לחסוך המון מהmaintainability is אבל זה תמיד יהיה יותר מסובך לכתוב testים עם מוק objects מאשר בלי. אז אז אז הגיידליין פה הוא להשתמש בכמה שפחות מוקס, כמה שפחות סטס, אלא אם כן אין ברירה. בסדר? אסינכרוני בדרך כלל תלוי מה אתה מרוצה לבדוק באסינכרוני. מה אתה רוצה לבדוק?

[\[32:06\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1926s) יש לך שתי שני סוגים של של בדיקות. אתה יכול לבדוק שהעבודה האסינכרונית נעשת נכון. לדוגמה, יש לי שלושה טרידים ואני רוצה לוודא שאני לא יוצר דדלוק או שאתה רוצה לוודא שהלוגיקה שכלד מרי סינר. זה שני סוגים שונים של בדיקות. אחד מהם זה אינטגרש ואין שום דרך אחרת והשני מהם אתה יכול להפריד כל אחד מהם ללוגיקה שלו. לבדוק אותו בטסט. בלי קשר לשום דבר. אז אני לא יודע לאזמן את המתק. אוקיי האמת דיברתי על השני אבל הבנתי להפריד את זה בעצם כלסרד יש לו לוגיקה משלו ואתה בודק אותה כest work כלד אמור לייצר איזשהי תוצאה אחרת למה אתה מריץ נכון אז כלד שלו בסדר יכול להיות שגם 17 יכול להיות שזה לולה שעושה 17 דברים אבל זה עדיין כל אחד מה אתה יכול לבדוק במפר של הטestטים לא צריך שלושה אחר להריץ אותו ואם אתה צריך אז תעשה אבסטרקציה שתוכל להריץ כל אחד מהם סתם קרה לפונקציה

[\[33:02\]](https://www.youtube.com/watch?v=8H69eQeitro&t=1982s) בסדר רגע אבל יש פה בעיה של פאבליק שלפט וכאלה לא תגדיר בעיה הוא יכול להיות שסרד אחד הוא לא קבל חיצוני אז כל המתודות שלו היו פייט אז יהיה לי קשה לבדוק אותו >> לפרד אין מתודות מבחינתנו >> הפונקציות שהוא מפעיל הם קלאס תחשוב שאתה עושה אינקפסולציה של של קלאס שרד מבצע לאיזשהו קלאס אחד והפרד הזה מפעיל את הקלאס איזשהו פונקציה פאבליק הרי בסופו של דבר כל סרט צריך לעשות תמדוק לפונקציה נכון יש לו איזשהי >> פונציה לא לקס >> אבל הפונקציה צריכה להיות על קלאס כלשהו >> נכון >> במקום שזה יהיה סתם על איזה פונקציה שהיא לא מחוברת לשום דבר זה תהיה איזשהו פונקציה על קלאס שעושה את העבודה והוא אחרי רק להפריד מחר תהחלק את הקלאס הראשונים בהחלט משרן לך את הדיזיין כדי שהוא יהיה יותר testable יותר קרי

[\[33:48\]](https://www.youtube.com/watch?v=8H69eQeitro&t=2028s) >> אגב זה עוד שאלה שמא לא לא לשאול אבל באמת הנושא של prיבטateפbליק וכאילו בעצם כל מצב שאני רוצה לבדוק חיזת להיות פאבליק נכון בהגדרה ש >> שום דבר לא חייב בוא נגיד ככה לא חייב אבל בהחלט מומלץ אין פה חייב בדבר הזה באנטגרש test אין חייב בכלל וניטest מומלץ מאוד בגלל שככל שאתה בודק יותר דברים שהם prיבט אז הסיכוי שהם השתנו בעתיד הם הרבה תעולות או יותר גבוה והמטנבity יורד אז הייתי אומר ש99% מהזמן פאבליק זה הדרך הטובה ביותר עד שאין לך ברירה אין לך ברירה לדוגמה אם אתה מנסה להחביא קוד בגלל סקיור

[\[34:27\]](https://www.youtube.com/watch?v=8H69eQeitro&t=2067s) בדרך כלל יש לך ברירה ברירה היא די פשוטה לדוגמה במיין מטוד עשיתם אותו אתמול פאבליק אף אחד לא מת מזה נכון חושב כולם פה אז אף אחד לא מת בסדר עכשיו יש את הנושא דרך אגב יש ויכוח שלם של אנשים ש ש לא אנשים יש ויכוח שלם של סוג של אמונה כמעט שגטורינטד זה עם קפסולציה והכבעה של פונקציונליות כדי שאף אחד לא שתמש בה.

[\[35:01\]](https://www.youtube.com/watch?v=8H69eQeitro&t=2101s) אבל הנושא של object oriented בtesting הוא קצת משנה את התמונה. הרבה פעמים הוא אומר שאם אתה לא מצליח לבדוק משהו אז יכול להיות שהדיזיין שלך הוא לא testable מספיק לעשות

## Related

- [Automated builds running automated tests](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-7#ch07lev1sec1) · The Art of Unit Testing, 2nd ed., ch. 7

    Automated builds running automated tests, matching the advice to run tests in the build and fail it.

- [I changed my mind - Mock objects are wrong for database unit testing](https://osherove.com/blog/2004/12/10/i-changed-my-mind-mock-objects-are-wrong-for-database-unit-t.html) · osherove.com

    Roy's reasoning on faking versus integration-testing database code, one of the storage options discussed in the lesson.

- [You don’t need mock objects most of the time](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-5) · The Art of Unit Testing, 3rd ed., ch. 5

    Book section arguing you don't need mock objects most of the time, as the lesson advises.

### Also linked in this lesson

#### The Art of Unit Testing, 3rd ed.

- [Defining unit testing, step by step](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-1#sigil_toc_id_17), ch. 1
- [Integration tests](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-1#sigil_toc_id_25), ch. 1
- [Interaction testing, mocks, and stubs](https://livebook.manning.com/book/the-art-of-unit-testing-third-edition/chapter-4#sigil_toc_id_76), ch. 4

#### The Art of Unit Testing, 2nd ed.

- [Cross-cutting concerns injection](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-7#ch07lev1sec5), ch. 7
- [The difference between mocks and stubs](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-4#ch04lev1sec2), ch. 4
- [Interaction testing using mock objects](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-4), ch. 4
- [First steps with NUnit](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-2#ch02lev1sec3), ch. 2
- [Defining unit testing, step by step](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-1#ch01lev1sec1), ch. 1
- [Testing results that are system state changes instead of return values](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-2#ch02lev1sec7), ch. 2
- [Dynamically creating a fake object](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-5#ch05lev1sec2), ch. 5
- [Integration tests](https://livebook.manning.com/book/the-art-of-unit-testing-second-edition/chapter-1#ch01lev1sec3), ch. 1

[Previous lesson Summary Day 1](https://courses.osherove.com/courses/tdd-in-net-in-hebrew/summary-day-1/) [Next lesson Mocks and Stubs](https://courses.osherove.com/courses/tdd-in-net-in-hebrew/mocks-and-stubs/)


---

## About the author

**Roy Osherove**: Senior Solutions Architect at AWS working on AI for production and AI-driven development; author of The Art of Unit Testing and Elastic Leadership, with about 20 years of consulting and training on unit testing, TDD, team leadership and continuous delivery.

### Sites

- [RobotPaper](https://robotpaper.ai/): This blog: AI patterns and anti-patterns, AI and coding agents, and engineering leadership.
- [osherove.com](https://osherove.com): Roy's personal site. Author of The Art of Unit Testing and Elastic Leadership; consulting and training on unit testing, TDD, team leadership and continuous delivery, plus about 20 years of blog posts.
- [The Art of Unit Testing](https://www.artofunittesting.com): The Art of Unit Testing, 3rd Edition (Manning): readable, maintainable, trustworthy unit tests, plus TDD workshops in C#, JavaScript, Java and Kotlin.
- [5whys.com](https://www.5whys.com): Roy's writing on software team leadership: self-organizing teams, surviving chaos, learning mode and the Elastic Leadership model.
- [Pipeline Driven](https://pipelinedriven.org): Continuous delivery and DevOps practices: build patterns, pipeline-friendly testing, DevOps metrics and enterprise DevOps.
- [Elastic Leadership](https://www.elasticleadership.com): Elastic Leadership, Roy's framework for software team leaders (survival, learning and self-organizing modes).

### Social

- X: https://x.com/royosherove
- LinkedIn: https://www.linkedin.com/in/osherove/

### Contact

- Contact form: https://forms.gle/jQSx5KoXvrVA1JCK7

### License

Licensed under CC BY 4.0 — reuse, quote and adapt with attribution (Roy Osherove, link to the original page). License: https://creativecommons.org/licenses/by/4.0/
