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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
คนเจ้าชู้?
โดย noppadonsk จ 27 ม.ค. 2020 11:16 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
2
จ 27 ม.ค. 2020 11:16 am โดย noppadonsk
รับติดตั้งระบบ Skype for Business และ Microsoft Teams
โดย Atomseed Suckseed จ 27 ม.ค. 2020 11:05 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
3
จ 27 ม.ค. 2020 11:05 am โดย Atomseed Suckseed
ขอสอบถามเกี่ยวกับ การ send_file zip ครับ
โดย benzas00123 ส 25 ม.ค. 2020 8:44 pm บอร์ด Programming - C/C++ & java & Python
0
31
ส 25 ม.ค. 2020 8:44 pm โดย benzas00123
ขอสอบถามเกี่ยวกับวิธีสร้างตัวไว้สำหรับ download หน่อยครับ
โดย benzas00123 ส 25 ม.ค. 2020 5:53 pm บอร์ด Programming - C/C++ & java & Python
0
10
ส 25 ม.ค. 2020 5:53 pm โดย benzas00123
pycharm รันภาษาไทยไม่ได้
โดย Anonymous ส 25 ม.ค. 2020 5:29 pm บอร์ด Programming - C/C++ & java & Python
0
10
ส 25 ม.ค. 2020 5:29 pm โดย บุคคลทั่วไป
pycharm รันภาษไม่ได้
โดย Anonymous ส 25 ม.ค. 2020 5:15 pm บอร์ด Programming - C/C++ & java & Python
1
9
ส 25 ม.ค. 2020 5:16 pm โดย mindphp
ขอสอบถามวิธีการ ปิด ip หน่อยครับ
โดย benzas00123 ส 25 ม.ค. 2020 2:48 pm บอร์ด Programming - C/C++ & java & Python
2
19
ส 25 ม.ค. 2020 5:39 pm โดย benzas00123
จะทำไรให้ View Detail จัดเรียงได้ครับ
โดย jamepiyawat ส 25 ม.ค. 2020 2:32 pm บอร์ด Joomla Development
1
264
ส 25 ม.ค. 2020 2:41 pm โดย mindphp
os.mkdir ฟังก์ชั่นสำหรับการสร้าง folder ใหม่
โดย benzas00123 ศ 24 ม.ค. 2020 6:44 pm บอร์ด Python Knowledge
0
13
ศ 24 ม.ค. 2020 6:44 pm โดย benzas00123
upload รูปภาพหลายๆรูป ด้วย Flask
โดย benzas00123 ศ 24 ม.ค. 2020 6:31 pm บอร์ด Python Knowledge
0
20
ศ 24 ม.ค. 2020 6:31 pm โดย benzas00123
มาแล้ว MDPartner Component สำหรับจัดเก็บข้อมูลลูกค้าในระบบ CRM
โดย prmindphp ศ 24 ม.ค. 2020 6:02 pm บอร์ด MindPHP News & Feedback
0
52
ศ 24 ม.ค. 2020 6:02 pm โดย prmindphp
os.remove ฟังก์ชั่นสำหรับการลบไฟล์
โดย benzas00123 ศ 24 ม.ค. 2020 5:35 pm บอร์ด Python Knowledge
0
14
ศ 24 ม.ค. 2020 5:35 pm โดย benzas00123
ขอสอบถามวิธีการดึงข้อมูลมาลงใน table ที่เราต้องการหน่อยครับ
โดย benzas00123 ศ 24 ม.ค. 2020 2:06 pm บอร์ด Programming - C/C++ & java & Python
1
257
ศ 24 ม.ค. 2020 2:14 pm โดย benzas00123
ลูกไม่รักดี?
โดย noppadonsk ศ 24 ม.ค. 2020 10:40 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
20
ศ 24 ม.ค. 2020 10:40 am โดย noppadonsk
วิธีการแปลง timestamp เพื่อหาจำนวนวันที่ผ่านมาหรือคงเหลือ
โดย Ittichai_chupol พ 22 ม.ค. 2020 6:37 pm บอร์ด PHP Knowledge
0
53
พ 22 ม.ค. 2020 6:37 pm โดย Ittichai_chupol
วิธีการตรวจสอบว่ารูปเป็นแนวตั้งหรือแนวนอน ด้วยภาษา php
โดย jamepiyawat พ 22 ม.ค. 2020 6:16 pm บอร์ด PHP Knowledge
0
36
พ 22 ม.ค. 2020 6:16 pm โดย jamepiyawat
Range Sliders เก็บค่าตัวเลขด้วย range sliders
โดย benzas00123 พ 22 ม.ค. 2020 5:50 pm บอร์ด Booststap Knowledge
1
102
ศ 24 ม.ค. 2020 9:32 am โดย LEG
อยากทราบวิธีการตรวจสอบว่าจะมีเวลาอีกกี่วันถึงจะ ถึงเลข timestamp ที่กำหนด
โดย Ittichai_chupol พ 22 ม.ค. 2020 3:54 pm บอร์ด Programming - PHP
1
140
พ 22 ม.ค. 2020 4:18 pm โดย thatsawan
ขอสอบถามวิธีการเขียน bootstrap 3 ในการสร้าง bar ครับ
โดย benzas00123 พ 22 ม.ค. 2020 3:13 pm บอร์ด HTML CSS
5
179
พ 22 ม.ค. 2020 3:32 pm โดย benzas00123
วันหยุดที่หายไป
โดย noppadonsk พ 22 ม.ค. 2020 11:42 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
74
พ 22 ม.ค. 2020 11:42 am โดย noppadonsk