ให้เรตสมาชิก: 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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
B - กดเพิ่มเมนูใหม่แล้ว Error
โดย tsukasaz ศ 17 เม.ย. 2020 2:35 pm บอร์ด Odoojob.com - Tester
1
4
ศ 17 เม.ย. 2020 7:53 pm โดย tsukasaz
B - หน้าข้อมูลงาน Jobs List ข้อมูลไม่แสดง
โดย tsukasaz ศ 17 เม.ย. 2020 2:19 pm บอร์ด Odoojob.com - Tester
0
2
ศ 17 เม.ย. 2020 2:19 pm โดย tsukasaz
B - หน้าฟอร์มข้อมูล resume อัพโหลดไฟล์ไม่เข้า
โดย tsukasaz ศ 17 เม.ย. 2020 2:10 pm บอร์ด Odoojob.com - Tester
0
3
ศ 17 เม.ย. 2020 2:10 pm โดย tsukasaz
B - หน้าข้อมูลสมาชิกข้อมูลไม่แสดง และมีแจ้ง Warning
โดย tsukasaz ศ 17 เม.ย. 2020 2:07 pm บอร์ด Odoojob.com - Tester
0
1
ศ 17 เม.ย. 2020 2:07 pm โดย tsukasaz
B - หัวข้อ กับ ชื่อเมนู ไม่ตรงกัน
โดย tsukasaz ศ 17 เม.ย. 2020 2:05 pm บอร์ด Odoojob.com - Tester
0
2
ศ 17 เม.ย. 2020 2:05 pm โดย tsukasaz
AI x THERMAL CAMERA คัดกรองผู้ป่วยด้วยการตรวจจับอุณหภูมิบนใบหน้า
โดย LEG ศ 17 เม.ย. 2020 1:28 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
1123
ศ 17 เม.ย. 2020 1:28 pm โดย LEG
วิธีการเลือกปรับแก้ไข css เฉพาะจุดใดจุดหนึ่งเท่านั้น
โดย Ittichai_chupol ศ 17 เม.ย. 2020 12:29 pm บอร์ด CSS Knowledge
0
103
ศ 17 เม.ย. 2020 12:29 pm โดย Ittichai_chupol
Codeigniter 3.1.0 เจอปัญหาเรื่อง session ไม่เก็บ ใน PHP 7.2
โดย tsukasaz พ 15 เม.ย. 2020 12:38 pm บอร์ด Programming - PHP
1
130
พฤ 16 เม.ย. 2020 11:30 am โดย mindphp
R - Template Email กลับมา log in เพื่อเพิ่ม Profile เเละได้รับเมลจากอะไร ทั้ง TH EN
โดย thatsawan อ 14 เม.ย. 2020 7:27 pm บอร์ด Odoojob.com - Tester
0
4
อ 14 เม.ย. 2020 7:27 pm โดย thatsawan
อัพเกรดเวอร์ชั่นใหม่สำหรับ Joomla ด้วย Component MDUpgrade
โดย prmindphp อ 14 เม.ย. 2020 6:58 pm บอร์ด MindPHP News & Feedback
1
92
พฤ 16 เม.ย. 2020 7:01 pm โดย prmindphp
(Close)B - ได้รับเมลเข้าเว็บเเล้วหลังจากสมัครงานมาเเต่เข้าสู่ระบบไม่ได้
โดย thatsawan อ 14 เม.ย. 2020 6:24 pm บอร์ด Odoojob.com - Tester
2
10
ส 18 เม.ย. 2020 3:16 pm โดย thatsawan
VDO - MDfiles Updated to the latest version 1.5.49
โดย numtan5839 จ 13 เม.ย. 2020 6:55 pm บอร์ด MDFiles - Manual
4
13
อ 14 เม.ย. 2020 2:18 pm โดย mindphp
VDO - แนะนำ feature ใหม่ MDFiles
โดย numtan5839 จ 13 เม.ย. 2020 6:52 pm บอร์ด MDFiles - Manual
4
21
พ 15 เม.ย. 2020 2:22 am โดย mindphp
เป็นเกษตรกรรึป่าวตรวจสอบได้ที่นี่
โดย thatsawan จ 13 เม.ย. 2020 12:34 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
171
พ 15 เม.ย. 2020 11:32 am โดย thatsawan
บล็อค สแปมบอท ด้วย cloudflare
โดย mindphp จ 13 เม.ย. 2020 4:08 am บอร์ด Linux - Web Server
0
109
จ 13 เม.ย. 2020 4:08 am โดย mindphp
"กรมการจัดหางาน" ตามหาคนว่างงาน รับช่วยงานกรมแบบ Work from home วันละ 300 บาท 45 วัน
โดย thatsawan ส 11 เม.ย. 2020 4:12 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
107
ส 11 เม.ย. 2020 4:12 pm โดย thatsawan
ปัญหา google "อ๊ะ! มีบางอย่างผิดพลาด หน้านี้ไม่ได้โหลด Google Maps "เกิดจากอะไรค่ะ
โดย thatsawan ส 11 เม.ย. 2020 1:28 pm บอร์ด HTML CSS
1
109
ส 11 เม.ย. 2020 1:32 pm โดย mindphp
อยากทราบวิธี ทำให้ แพนทที่สร้างขึ้นมาสามารถทำงานได้อย่างอัตโนมัติ
โดย Ittichai_chupol ศ 10 เม.ย. 2020 10:22 pm บอร์ด Programming - PHP
6
121
พ 03 มิ.ย. 2020 9:59 am โดย Sirayu
B - ลืมตำแหน่งงาน ที่เคยทำงาน ที่บอร์ดหัวข้อว่าง
โดย thatsawan ศ 10 เม.ย. 2020 6:10 pm บอร์ด Odoojob.com - Tester
1
5
ศ 08 พฤษภาคม 2020 3:31 pm โดย thatsawan
(Close)B - สมัครงานเสร็จยังไม่มี User pass ให้ login มาฝั่ง Odoojob
โดย thatsawan ศ 10 เม.ย. 2020 6:08 pm บอร์ด Odoojob.com - Tester
1
6
อ 14 เม.ย. 2020 6:16 pm โดย thatsawan