ให้เรตสมาชิก: 2 / 5

ดาวใช้งานดาวใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

Yii Framework Unit Testing

Unit testing ของ Yii Framework ถูกเขียนอยู่บน PHPUnit, สรุปหลักการพื้นฐานของการเขียน unit Testing ใน Yii มีดังนี้
- ชื่อ Class เขียนอยู่ในรูปแบบ
XyzTest โดยต้อง extends จาก CTestCase หรือ CDbTestCase เมื่อ Xyz คือชื่อ class สำหรับ test เช่นถ้าเราต้องการเขียน test Post class ชื่อที่ตั้งคือ PostTest ส่วนการ extends นั้น extends CTestCase สำหรับ test ทั่วๆไป ถ้าจะ test active record ควรใช้ CDbTestCase แทน CTestCase เพราะ class PHPUnit_Framework_TestCase เป็น class แม่ของทั้งสอง class นั้นอยู่แล้ว คุณสมบัติต่างๆ ก็จะถูกสือถอดจาก class นั้น
- Save ไฟล์ด้วยชื่อตามรูปแบบ XyzTest.php ไว้ที่ protected/tests/unit/
- ชื่อ method ภายใน class ที่ต้องการ test เขียนตามรูปแบบ testAbc เมื่อ Abc คือชื่อ method
- วิธีการ test method มักจะใช้วิธีใส่ลำดับคำสั่งยืนยัน (assertion statements) เช่น assertTrue, assertEquals ซึ่งทำหน้าที่เป็น checkpoints ในการตรวจสอบความถูกต้องของ Class ของเรา

ตัวอย่างโค้ดการเขียน CommentTest
<?php

class CommentTest extends CDbTestCase
{
    /**
     * We use both 'Post' and 'Comment' fixtures.
     * @see CWebTestCase::fixtures
     */
    public $fixtures=array(
        'posts'=>'Post',
        'comments'=>'Comment',
    );

    public function testFindRecentComments()
    {
        $this->assertEquals(array(), Comment::model()->findRecentComments());

        $comment=new Comment;
        $comment->setAttributes(array(
            'content'=>'comment 1',
            'status'=>Comment::STATUS_APPROVED,
            'create_time'=>time(),
            'author'=>'me',
            'email'=>'me@example.com',
            'post_id'=>$this->posts['sample1']['id'],
        ),false);
        $this->assertTrue($comment->save(false));
        $this->assertEquals(1,$comment->id);

        $comments=Comment::model()->findRecentComments();
        $this->assertEquals(1,count($comments));
        $this->assertEquals($comment->attributes, $comments[0]->attributes);
    }

    public function testApprove()
    {
        $comment=new Comment;
        $comment->setAttributes(array(
            'content'=>'comment 1',
            'status'=>Comment::STATUS_PENDING,
            'create_time'=>time(),
            'author'=>'me',
            'email'=>'me@example.com',
            'post_id'=>$this->posts['sample1']['id'],
        ),false);
        $this->assertTrue($comment->save(false));

        $comment=Comment::model()->findByPk($comment->id);
        $this->assertTrue($comment instanceof Comment);
        $this->assertEquals(Comment::STATUS_PENDING,$comment->status);

        $comment->approve();
        $this->assertEquals(Comment::STATUS_APPROVED,$comment->status);
        $comment=Comment::model()->findByPk($comment->id);
        $this->assertEquals(Comment::STATUS_APPROVED,$comment->status);
    }
}
ทดลองรัน

>phpunit functional/CommentTest.php

ทดสอบรันในรูปแบบอื่นๆอ่านที่บทความ

เตรียมเครื่องทำ สำหรับ PHPUnit และ Selenium
ก่อนรัน ถ้ายังไม่ได้ satrt selenium ให้ start มันก่อนด้วยคำสั่ง
D:\xampp\htdocs\Yii_Framework>java -jar selenium-server.jar

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
แนะนำบริการ hosting จาก Hostneverdie
โดย tumsailom อ 05 เม.ย. 2020 7:58 pm บอร์ด Web Hosting Review - Free Host Share Host VPS
0
10
อ 05 เม.ย. 2020 7:58 pm โดย tumsailom
อยากทราบถ้าหากต้องการที่ทดสอบการทำงานของของ Event cron จะต้องทำอย่างไรบางครับ
โดย Ittichai_chupol ส 04 เม.ย. 2020 10:50 am บอร์ด Programming - PHP
0
26
ส 04 เม.ย. 2020 10:50 am โดย Ittichai_chupol
เทมเพลต Megadeal ของ MooZiiCart สำหรับทำเว็บขายสินค้าออนไลน์
โดย prmindphp ศ 03 เม.ย. 2020 6:39 pm บอร์ด MindPHP News & Feedback
0
38
ศ 03 เม.ย. 2020 6:39 pm โดย prmindphp
เครื่องมือช่วยกรองสินค้า สำหรับค้นหาสินค้าที่ต้องการ
โดย prmindphp พฤ 02 เม.ย. 2020 6:46 pm บอร์ด MindPHP News & Feedback
0
48
พฤ 02 เม.ย. 2020 6:46 pm โดย prmindphp
การเขียน Script สำหรับสร้าง User ใน Joomla
โดย tsukasaz พฤ 02 เม.ย. 2020 3:33 pm บอร์ด Joomla Developing Knowledge
0
99
พฤ 02 เม.ย. 2020 3:33 pm โดย tsukasaz
อยากทราบวิธีการดึงข้อมูลจาก Excel โดยการดึงข้อมูลจาก คอลัมของ Excel มาบันทึกลงในฐานข้อมูล
โดย Ittichai_chupol พฤ 02 เม.ย. 2020 10:09 am บอร์ด Programming - PHP
1
85
พฤ 02 เม.ย. 2020 10:43 am โดย mindphp
เอ้าๆ ใครที่ใบขับขี่หมดอายุในช่วง COVID-19 สามารถอมรมผ่านออนไลน์ ด้วย e-learning ได้เเล้วนะ
โดย thatsawan พฤ 02 เม.ย. 2020 10:09 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
53
พฤ 02 เม.ย. 2020 10:09 am โดย thatsawan
วิธีการเชื่อม api ของ gitlab สำหรับดาวน์โหลดไฟล์ project ใน ภาษา Python
โดย jirawoot พ 01 เม.ย. 2020 3:38 pm บอร์ด Python Knowledge
0
117
พ 01 เม.ย. 2020 3:38 pm โดย jirawoot
สอบถาม ผมจะทำ ci ของ gitlab ผมดูดไฟล์ project จาก api ของ gitlab ได้แล้วทำอย่างไรต่อครับ
โดย jirawoot พ 01 เม.ย. 2020 12:09 pm บอร์ด Programming - C/C++ & java & Python
3
91
พฤ 02 เม.ย. 2020 10:50 am โดย tsukasaz
ผมอัพเกรด joomla 2.5 เป็นเวอร์ชั่นล่าสุด 3.8 หน้าเว็บเวอร์ชั่นเดิมจะหายไปไหมคับ
โดย Anonymous พ 01 เม.ย. 2020 12:00 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
3
66
พ 01 เม.ย. 2020 4:29 pm โดย icphp
ลดอัตราหัก ณ ที่จ่าย เหลือ 1.5% ออกเป็นกฎหมายมีผลใช้บังคับแล้ว!!! นะ เริ่ม 1 เมษายน 2563
โดย thatsawan พ 01 เม.ย. 2020 10:54 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
88
พ 01 เม.ย. 2020 10:54 am โดย thatsawan
วิธีการจัดการกับเด็กๆ กวนใจ เมื่อต้องทำงานจากบ้าน #Work from home
โดย thatsawan พ 01 เม.ย. 2020 9:53 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
51
พ 01 เม.ย. 2020 9:53 am โดย thatsawan
วิธีแก้ไขปัญหา สำหรับ การนำ Template phpbb 3.3 มาใช้ใน phpbb 3.2
โดย thatsawan อ 31 มี.ค. 2020 7:27 pm บอร์ด phpBB user Guide Knowledge
0
125
อ 31 มี.ค. 2020 7:27 pm โดย thatsawan
สอบถาม ผมลองใช้ curl ของ API ของ gitlab แล้ว "message":"401 Unauthorized ครับ
โดย jirawoot อ 31 มี.ค. 2020 5:16 pm บอร์ด Programming - C/C++ & java & Python
1
213
อ 31 มี.ค. 2020 5:35 pm โดย jirawoot
การเชื่อมต่อ API ของ GitLab เพื่อดาวน์โหลดไฟล์
โดย tsukasaz อ 31 มี.ค. 2020 12:52 pm บอร์ด PHP Knowledge
0
1554
อ 31 มี.ค. 2020 12:52 pm โดย tsukasaz
วิธิการใส่ icon favorite เพื่อแสดงในแต่ละ browser
โดย Ittichai_chupol อ 31 มี.ค. 2020 11:14 am บอร์ด Graphic design
4
241
พฤ 02 เม.ย. 2020 4:33 pm โดย thatsawan
สิ่งที่เกิดขึ้นจริงในการประชุมด้วยเทคโนโลยี Conference Call #Work from home
โดย thatsawan อ 31 มี.ค. 2020 10:39 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
59
อ 31 มี.ค. 2020 10:39 am โดย thatsawan
ช่วงนี้ Work From Home ก็จะลำบากนิดนึงแหละเนอะ #ทาสเเมว
โดย thatsawan จ 30 มี.ค. 2020 2:29 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
149
จ 30 มี.ค. 2020 2:29 pm โดย thatsawan
อยากทราบวิธีสร้างเว็บหน้าเดียวแบบกรอกข้อมูลเสร็จแล้วประมวลผล
โดย phongkhukhan ส 28 มี.ค. 2020 1:00 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
2
440
ส 28 มี.ค. 2020 1:09 am โดย mindphp
แสดงสินค้าที่อยากได้ใน Wishlist ด้วย Module Wishlist
โดย prmindphp ศ 27 มี.ค. 2020 5:26 pm บอร์ด MindPHP News & Feedback
0
282
ศ 27 มี.ค. 2020 5:26 pm โดย prmindphp