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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
วิธีติดตั้ง Netbeans8.2 บน Ubuntu
โดย AePongsak พ 23 พฤษภาคม 2018 4:48 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
4
พ 23 พฤษภาคม 2018 4:48 pm โดย AePongsak
สอบถามการติดตั้ง LAMP Server บน Ubuntu 18.04 ด้วยครับ
โดย AePongsak พ 23 พฤษภาคม 2018 3:54 pm บอร์ด SQL - Database
1
9
พ 23 พฤษภาคม 2018 5:24 pm โดย mindphp
งานประจำวันที่ 23 พฤษภาคม 2561
โดย Rujikon พ 23 พฤษภาคม 2018 2:38 pm บอร์ด M060 - นายรุจิกร พงษ์พิละ
0
2
พ 23 พฤษภาคม 2018 2:38 pm โดย Rujikon
อัพเดทด่วน Joomla เวอร์ชั่น 3.8.8 ปรับปรุงเรื่องความปลอดภัยและแก้ไขข้อผิดพลาดต่างๆ
โดย tsukasaz พ 23 พฤษภาคม 2018 11:40 am บอร์ด PHP News
0
12
พ 23 พฤษภาคม 2018 11:40 am โดย tsukasaz
งานประจำวันที่ 23 พฤษภาคม 2561
โดย rangsan พ 23 พฤษภาคม 2018 9:56 am บอร์ด M058 - รังสรรค์ มุ่งกลาง
0
1
พ 23 พฤษภาคม 2018 9:56 am โดย rangsan
[ปัญหา] การอัพไฟล์ขึ้น Git ไมสามารถอัพได้
โดย rangsan พ 23 พฤษภาคม 2018 9:53 am บอร์ด Mindphp Task (ทดลองงาน)
0
1
พ 23 พฤษภาคม 2018 9:53 am โดย rangsan
งานประจำวันที่ 23 พฤษภาคม 2561
โดย Parichat พ 23 พฤษภาคม 2018 9:27 am บอร์ด M061 - ปาริชาติ รัตโณภาส
0
1
พ 23 พฤษภาคม 2018 9:27 am โดย Parichat
B - Admin + Financial Manager ไม่เห็นเมนูตั้งค่า
โดย thatsawan อ 22 พฤษภาคม 2018 11:30 pm บอร์ด M.D.Soft Co.,Ltd. - Tester
3
7
พ 23 พฤษภาคม 2018 4:21 pm โดย thatsawan
B - Print inv ที่อยู่ ไม่ขึ้น ชื่อสาขา เป็นอังกฤษ
โดย mindphp อ 22 พฤษภาคม 2018 9:07 pm บอร์ด M.D.Soft Co.,Ltd. - Tester
2
6
อ 22 พฤษภาคม 2018 9:14 pm โดย mindphp
ขอสอบถามเกี่ยวกับ Google sheet ครับ
โดย toonytoony2004 อ 22 พฤษภาคม 2018 8:07 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
10
อ 22 พฤษภาคม 2018 8:07 pm โดย toonytoony2004
วิธีการทำ Menu Button บน Toolbar เพื่อใช้ในการตั้งค่าต่าง ๆ
โดย rangsan อ 22 พฤษภาคม 2018 7:03 pm บอร์ด Mobile Application Developing- Android, iOS
0
8
อ 22 พฤษภาคม 2018 7:03 pm โดย rangsan
วิธีการในการสร้าง Magic Button Android Studio
โดย rangsan อ 22 พฤษภาคม 2018 6:37 pm บอร์ด Mobile Application Developing- Android, iOS
0
6
อ 22 พฤษภาคม 2018 6:37 pm โดย rangsan
งานประจำวันที่ 22 พฤษภาคม 2561
โดย Rujikon อ 22 พฤษภาคม 2018 10:37 am บอร์ด M060 - นายรุจิกร พงษ์พิละ
1
7
อ 22 พฤษภาคม 2018 7:32 pm โดย Rujikon
งานประจำวันที่ 22 พฤษภาคม 2561
โดย rangsan อ 22 พฤษภาคม 2018 9:47 am บอร์ด M058 - รังสรรค์ มุ่งกลาง
1
9
อ 22 พฤษภาคม 2018 7:11 pm โดย rangsan
งานประจำวันที่ 22 พฤษภาคม 2561
โดย Parichat อ 22 พฤษภาคม 2018 9:36 am บอร์ด M061 - ปาริชาติ รัตโณภาส
1
4
อ 22 พฤษภาคม 2018 7:18 pm โดย Parichat
โน๊ตช่วยจำของ M061
โดย Parichat จ 21 พฤษภาคม 2018 11:50 pm บอร์ด M061 - ปาริชาติ รัตโณภาส
1
1
จ 21 พฤษภาคม 2018 11:52 pm โดย Parichat
งานประจำวันที่ 21 พฤษภาคม 2561
โดย Parichat จ 21 พฤษภาคม 2018 6:53 pm บอร์ด M061 - ปาริชาติ รัตโณภาส
3
8
จ 21 พฤษภาคม 2018 11:57 pm โดย Parichat
Re - R ทำปิดบัญเขียนด้วย IDE Test เป็น webdriver
โดย rangsan จ 21 พฤษภาคม 2018 7:02 pm บอร์ด M058 - รังสรรค์ มุ่งกลาง
0
5
จ 21 พฤษภาคม 2018 7:02 pm โดย rangsan
แนะนำฟีดเจอการทำงานของระบบ OpenERP
โดย Rujikon จ 21 พฤษภาคม 2018 7:01 pm บอร์ด M060 - นายรุจิกร พงษ์พิละ
0
2
จ 21 พฤษภาคม 2018 7:01 pm โดย Rujikon
สอบถามสิทธิประกันสังคม บริการทางการแพทย์
โดย AePongsak จ 21 พฤษภาคม 2018 4:37 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
3
20
จ 21 พฤษภาคม 2018 6:14 pm โดย AePongsak