ให้เรตสมาชิก: 1 / 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'=>'This email address is being protected from spambots. You need JavaScript enabled to view it.',
            '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'=>'This email address is being protected from spambots. You need JavaScript enabled to view it.',
            '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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
MOD_MTB_NEWS_RECENT
เข้า facebook ไม่ได้
โดย บุคคลทั่วไป ศ 23 มิ.ย. 2017 6:57 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
4
ศ 23 มิ.ย. 2017 6:57 pm โดย บุคคลทั่วไป
แก้ปัญหา rsync แล้ว Error .ssh/known_hosts
โดย mindphp ศ 23 มิ.ย. 2017 6:54 pm บอร์ด Linux - Web Server
1
3
ศ 23 มิ.ย. 2017 6:54 pm โดย mindphp
RFID หรือ NFC อ่านค่าได้จากระยะไกลสุดเท่าไหร่
โดย Oh_nO ศ 23 มิ.ย. 2017 10:55 am บอร์ด Mobile Programming - Android, iOS, Window Phone
1
17
ศ 23 มิ.ย. 2017 10:55 am โดย nuattawoot
สอบถามนิยามหรือความหมายของคำว่า Subscriber กับ Digest Subscriber ในเรื่องของ Mailing list ค่ะ
โดย araxvaan พฤ 22 มิ.ย. 2017 9:33 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
7
พฤ 22 มิ.ย. 2017 9:33 pm โดย araxvaan
โปรแกรมต่อ Video (วีดีโอ) ด้วย Python
โดย nuattawoot พฤ 22 มิ.ย. 2017 7:10 pm บอร์ด Programming - C/C++ & java & Python
0
21
พฤ 22 มิ.ย. 2017 7:10 pm โดย nuattawoot
สอบถามเรื่องการดึงข้อมูลสุดท้ายจาก ฐานข้อมูลมาแสดงใช้คำสั่งอะไรครับ
โดย AePongsak พฤ 22 มิ.ย. 2017 5:06 pm บอร์ด Programming - PHP
1
17
พฤ 22 มิ.ย. 2017 5:06 pm โดย thatsawan
เพิ่มข้อมูลลงSQL เพิ่มไปแล้ว ตอนแสดงจะให้แสดงID ล่าสุดที่เพิ่มเข้าไปยังไงครับ
โดย nuattawoot พ 21 มิ.ย. 2017 7:28 pm บอร์ด Programming - C/C++ & java & Python
4
36
พ 21 มิ.ย. 2017 7:28 pm โดย nuattawoot
ส่งข้อมูลข้ามฟอร์มแล้ว ข้อมูลไม่แสดง แต่ตารางแสดงครบ
โดย nuattawoot พ 21 มิ.ย. 2017 5:13 pm บอร์ด Programming - C/C++ & java & Python
1
11
พ 21 มิ.ย. 2017 5:13 pm โดย nuattawoot
แนะนำ MySQL Store Procedure
โดย moomai พ 21 มิ.ย. 2017 5:01 pm บอร์ด Mindphp Videoman
0
9
พ 21 มิ.ย. 2017 5:01 pm โดย moomai
สอบถามการใช้คำสั่ง ORDER BY ของ phpBB ตอน SELECT ข้อมูล
โดย AePongsak พ 21 มิ.ย. 2017 1:51 pm บอร์ด Programming - PHP
4
33
พ 21 มิ.ย. 2017 1:51 pm โดย AePongsak
สอบถามเรื่องการเขียนโค๊ด python ภายใต็ HTML
โดย nuattawoot พ 21 มิ.ย. 2017 11:56 am บอร์ด Programming - C/C++ & java & Python
1
23
พ 21 มิ.ย. 2017 11:56 am โดย mindphp
โดยทั่วไปใช้ Framework ตัวไหนครับ
โดย toonytoony2004 อ 20 มิ.ย. 2017 10:19 pm บอร์ด Joomla Development
1
38
อ 20 มิ.ย. 2017 10:19 pm โดย tsukasaz
สอบถามเรื่องการรัน Flask มัน Error
โดย nuattawoot อ 20 มิ.ย. 2017 6:48 pm บอร์ด Programming - C/C++ & java & Python
1
15
อ 20 มิ.ย. 2017 6:48 pm โดย nuattawoot
สอบถามเรื่อง คำสั่งที่ใช้จัดวางตำแหน่งข้อมูลในตาราง
โดย AePongsak อ 20 มิ.ย. 2017 5:34 pm บอร์ด Programming - PHP
4
32
อ 20 มิ.ย. 2017 6:28 pm โดย AePongsak
สอบถามการตั้งค่า Calendars and Contact ใน cPanel
โดย araxvaan อ 20 มิ.ย. 2017 5:45 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
20
อ 20 มิ.ย. 2017 5:45 pm โดย araxvaan
ใช้โปรแกม pycham เขียน python จะติดต่อฐานข้อมูลยังไงครับ
โดย nuattawoot อ 20 มิ.ย. 2017 10:34 am บอร์ด Programming - C/C++ & java & Python
6
115
อ 20 มิ.ย. 2017 10:34 am โดย nuattawoot
สอบถามรายละเอียดของการตั้งค่า Configure Email Routing ของ cPanel
โดย araxvaan จ 19 มิ.ย. 2017 11:07 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
49
จ 19 มิ.ย. 2017 11:07 pm โดย araxvaan
สอบถามนิยาม หรือคำจำกัดความของ GnuPG ว่าคืออะไร
โดย araxvaan จ 19 มิ.ย. 2017 5:39 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
41
จ 19 มิ.ย. 2017 5:39 pm โดย araxvaan
สอบถามวิธีการใช้งาน Track Delivery ในตัว cPanel
โดย araxvaan จ 19 มิ.ย. 2017 5:36 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
0
34
จ 19 มิ.ย. 2017 5:36 pm โดย araxvaan
อยากทราบวิธีเพิ่มข้อมูลในตาราง
โดย araxvaan อ 18 มิ.ย. 2017 11:32 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
5
89
อ 18 มิ.ย. 2017 11:32 pm โดย araxvaan