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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ทำความรู้จักกับโปรแกรม easy acc โปรแกรมอำนวยความสะดวยต่อการจัดการระบบบัญชี
โดย nutchasn จ 27 ม.ค. 2020 7:12 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
3
จ 27 ม.ค. 2020 7:12 pm โดย nutchasn
อยากทรบวิธีการตรวจสอบความถูกต้องของเลขบัตรประชาชน
โดย Ittichai_chupol จ 27 ม.ค. 2020 6:33 pm บอร์ด Programming - PHP
0
5
จ 27 ม.ค. 2020 6:33 pm โดย Ittichai_chupol
Pillow library ฟังก์ชั่น rotate ใช้สำหรับการหมุนรูปภาพ
โดย benzas00123 จ 27 ม.ค. 2020 6:22 pm บอร์ด Python Knowledge
0
7
จ 27 ม.ค. 2020 6:22 pm โดย benzas00123
Pillow library ความแตกต่างระหว่างฟังก์ชั่น thumbnail และ resize
โดย benzas00123 จ 27 ม.ค. 2020 6:10 pm บอร์ด Python Knowledge
0
4
จ 27 ม.ค. 2020 6:10 pm โดย benzas00123
Pillow library การปรับขนาดรูปภาพด้วยฟังก์ชั่น resize()
โดย benzas00123 จ 27 ม.ค. 2020 5:58 pm บอร์ด Python Knowledge
0
7
จ 27 ม.ค. 2020 5:58 pm โดย benzas00123
วิธีการเดินทางจากบ้าน นครราชสีมา - กรุงเทพฯ
โดย nutchasn จ 27 ม.ค. 2020 3:40 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
10
จ 27 ม.ค. 2020 3:40 pm โดย nutchasn
คนเจ้าชู้?
โดย noppadonsk จ 27 ม.ค. 2020 11:16 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
8
จ 27 ม.ค. 2020 11:16 am โดย noppadonsk
รับติดตั้งระบบ Skype for Business และ Microsoft Teams
โดย Atomseed Suckseed จ 27 ม.ค. 2020 11:05 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
5
จ 27 ม.ค. 2020 11:05 am โดย Atomseed Suckseed
ขอสอบถามเกี่ยวกับ การ send_file zip ครับ
โดย benzas00123 ส 25 ม.ค. 2020 8:44 pm บอร์ด Programming - C/C++ & java & Python
5
49
จ 27 ม.ค. 2020 7:04 pm โดย jirawoot
ขอสอบถามเกี่ยวกับวิธีสร้างตัวไว้สำหรับ download หน่อยครับ
โดย benzas00123 ส 25 ม.ค. 2020 5:53 pm บอร์ด Programming - C/C++ & java & Python
2
23
จ 27 ม.ค. 2020 4:00 pm โดย mindphp
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
21
ส 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
14
ศ 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
59
ศ 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
259
ศ 24 ม.ค. 2020 2:14 pm โดย benzas00123
ลูกไม่รักดี?
โดย noppadonsk ศ 24 ม.ค. 2020 10:40 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
20
ศ 24 ม.ค. 2020 10:40 am โดย noppadonsk