אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » פיתוח אינטרנט » פתרונות ומאמרים על פיתוח אינטרנט » PHP Unit מדריך לבדיקות PHP

PHP Unit מדריך לבדיקות PHP

רן בר-זיק מאי 18, 2014 8:00 am אין תגובות

הסבר מהיר ויעיל על שימוש ב-phpUnit לבדיקות.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

לחובבי הת'כלס: כל הקוד שאני מדבר עליו פה נמצא ב-GitHub.

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

  1. מישהו אחר חוץ ממני ישתמש בו
  2. אני אשתמש בו בעתיד באיזשהו זמן לא ידוע
  3. מהווה רכיב מרכזי בלא מעט מרכיבים אחרים

אני אטרח לכתוב כמה בדיקות אוטומטיות. למה? כי הן פשוטות. כי הן מאפשרות לכל מי שמשנה את הסקריפט שלי לוודא שהוא לא שובר פונקציונליות אחרת בטעות. כי הן מאפשרות לכל מפתח להבין בדיוק מה הסקריםט עושה ומה ה-output\input. מהניסיון שלי – התממשקות מול קוד שיש לו בדיקות פשוטה הרבה יותר מהתממשקות ושינוי של קוד שאין לו בדיקות.

למרות שאפשר ליצור בדיקות ב-PHP כמעט בכל כלי, אחד הכלים הפופולריים ביותר הוא phpunit – כלי שמאוד פשוט להשתמש בו ונפוץ בכמעט כל פרויקט קוד פתוח שקיים היום.

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

איך מתקינים?



sudo apt-get install phpunit


איך בודקים שההתקנה עברה בשלום? פשוט מקלידים phpunit. רץ? מעולה.

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

אם אתם רוצים לכתוב בדיקה מאפס כדי להבין 'בקטן' איך עובדים עם phpunit, תשארו איתי 🙂

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



<?php

namespace FlipText;
/**
 * Class FlipText
 * @package FlipText
 */
class FlipText {
    /**
     * @var null
     */
    private $text = null;

    /**
     * @param $text
     */
    function __construct($text) {
        if(!empty($text)) {
            $this->text = $this->text_convert($text);
            return $this->text;
        } else {
            return null;
        }
    }

    /**
     * @return null|string
     */
    public function getText() {
        return $this->text;
    }

    /**
     * @param $text
     * @return string
     */
    private function text_convert($text) {
        return strrev ($text);
    }
} 


ה-class החביב והמאוד מאוד פשוט הזה מופעל על ידי הקוד הבא:


<?php
require_once('flipText.php');

$obj = new FlipText\FlipText('Hello World!');
print $obj->getText();

בואו ונכתוב בדיקה לקוד המאוד פשוט הזה ונריץ אותו עם phpunit. ראשית ניצור תיקיה ושמה הוא test ובתוכה נכניס את הבדיקה הראשונה שלנו. אפשר לקרוא לקובץ איך שרוצים רק עם סיומת Test בסוף ואנו נקרא לו flipTextTest.php. בתוך הקובץ הזה יש class שיורש מתוך class של phpUnit ובתוכו יש מתודות פומביות, כל מתודה זו בדיקה. הבדיקה הראשונה שלנו היא פשוטה למדי – אנו מוודאים שהאובייקט עובד כמו שאנחנו רוצים שהוא יעבוד:


require_once('../flipText.php');

class FlipTextTest extends PHPUnit_Framework_TestCase {
    public function testFlipTextCreation() {
        $obj = new FlipText('test');
        $this->assertEquals('tset', $obj->getText());
    }
}

אין כאן איזה גליק גדול. שימו לב למתודה assertEquals. לא צריך להיות מדען טילים כדי להבין שמדובר בבדיקה אם הביטוי tset שווה למה שאני מקווה לקבל מהאובייקט שלי אם אני מכניס לתוכו test.

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


phpunit flipTextTest.php

מיד נקבל את הפלט הזה:

בדיקה אחת הצליחה
בדיקה אחת הצליחה

זה מראה לנו שהבדיקה הצליחה. בואו ונכתוב עוד בדיקה!


    public function testFlipTextEmpty() {
        $obj = new FlipText('');
        $this->assertEquals(null, $obj->getText());
    }

הבדיקה הזו למשל בודקת אם כשאני מכניס מחרוזת ריקה, אני מקבל null, כשאריץ את phpunit, אני אראה שגם הבדיקה הזו הצליחה.

בגדול… זהו! יש עוד המון דברים שאפשר לעשות עם phpUnit כמובן, ואני אדבר על כך במדריכים אחרים – אבל זה הבסיס והבסיס הוא טוב. יכול להיות שבדיקות יראו לכם כמו צורך מטופש ו-overkill, יכול להיות שבחלק מהמקרים אתם צודקים. אבל בפרויקטים שהם טיפה ארוכי טווח כל השקעה של דקה בבדיקות יכולה לגרום לכם להזיע הרבה פחות כשתצטרכו לעשות שינויים בקוד ולא תצטרכו לחשוש לשבור משהו בטעות למישהו אחר.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
PHP

השארת תגובה

ביטול

ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

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

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד