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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
B - com_M2OpenERP Migration ติดตั้งได้แต่ไม่สามารถตั้งค่าได้ใน Joomla 3.x
โดย Parichat ศ 22 มิ.ย. 2018 5:55 pm บอร์ด M2OpenERP
0
3
ศ 22 มิ.ย. 2018 5:55 pm โดย Parichat
Q - หน้ารายละเอียดสินค้าให้แสดงราคาเป็น USD ด้วยและTHB ด้วย
โดย Parichat ศ 22 มิ.ย. 2018 2:20 pm บอร์ด Joomla Dev
5
13
ศ 22 มิ.ย. 2018 6:04 pm โดย tsukasaz
B - หน้าข้อมูลสินค้า แสดงพิ้นหลังยาวกว่าเว็บต้นฉบับ
โดย tsukasaz ศ 22 มิ.ย. 2018 1:20 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
2
11
ศ 22 มิ.ย. 2018 6:12 pm โดย tsukasaz
B - หน้าข้อมูลสินค้า ต้องแสดงราคาเป็น USD ด้วย ตามเว็บต้นฉบับ
โดย tsukasaz ศ 22 มิ.ย. 2018 1:17 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
8
ศ 22 มิ.ย. 2018 6:02 pm โดย tsukasaz
B - หน้าข้อมูลสินค้า เมื่อเลือกสีสินค้า รูปแบบของราคาจากตัวหนาเปลี่ยนเป็นตัวปกติ
โดย tsukasaz ศ 22 มิ.ย. 2018 1:09 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
5
ศ 22 มิ.ย. 2018 1:46 pm โดย Parichat
B - หน้า How to Buy ข้อความเกินขอบพื้นหลัง
โดย tsukasaz ศ 22 มิ.ย. 2018 12:07 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
4
ศ 22 มิ.ย. 2018 1:28 pm โดย Parichat
B - หน้าดาวน์โหลดแสดงผลไม่เหมือนของเดิม ข้อความเกินขอบพื้นหลัง
โดย tsukasaz ศ 22 มิ.ย. 2018 12:04 pm บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
4
ศ 22 มิ.ย. 2018 12:10 pm โดย Parichat
Q - จัดรูปภาพให้อยู่ตรงกลางโดยใช้คำสั่ง Center แต่รูปภาพไม่อยู่กึ่งกลางตามคำสั่ง
โดย Parichat ศ 22 มิ.ย. 2018 12:02 pm บอร์ด Joomla Dev
6
13
ศ 22 มิ.ย. 2018 4:52 pm โดย Parichat
B - หน้ารายการสินค้า ปุ่ม Detail กับ Feature ไม่เปลี่ยนตอน Mouse Over
โดย tsukasaz ศ 22 มิ.ย. 2018 11:50 am บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
7
ศ 22 มิ.ย. 2018 4:20 pm โดย tsukasaz
Q - ทำให้รูปภาพตกลงในขนาดของหน้าจอมือถือกรณีใช้ grid-container
โดย Parichat ศ 22 มิ.ย. 2018 11:47 am บอร์ด Joomla Dev
9
19
ศ 22 มิ.ย. 2018 6:18 pm โดย tsukasaz
Q - แบ่งหน้าสินค้าในกรณีที่เปิดในมือถือ
โดย Parichat ศ 22 มิ.ย. 2018 11:41 am บอร์ด Joomla Dev
6
14
ศ 22 มิ.ย. 2018 4:44 pm โดย Parichat
B - การตั้งค่า Access Right สิทธ์แต่ละ User เข้าใช้งานไม่ได้
โดย nuattawoot ศ 22 มิ.ย. 2018 11:07 am บอร์ด อาร์ซีพี โกลบอล จำกัด - Tester
1
10
ศ 22 มิ.ย. 2018 4:46 pm โดย nuattawoot
งานประจำวันที่ 22 มิถุนายน 2561
โดย taemmynatchapon ศ 22 มิ.ย. 2018 10:27 am บอร์ด M063 - ณัชพล ชัยวุฒิ
1
3
ศ 22 มิ.ย. 2018 7:00 pm โดย taemmynatchapon
การดู URL ใน Joomla
โดย Parichat ศ 22 มิ.ย. 2018 10:24 am บอร์ด Joomla Developing Knowledge
0
10
ศ 22 มิ.ย. 2018 10:24 am โดย Parichat
B - หน้ารูปภาพสินค้าปรับทศนิยม 2 ตำแหน่ง
โดย tsukasaz ศ 22 มิ.ย. 2018 10:14 am บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
9
ศ 22 มิ.ย. 2018 10:46 am โดย Parichat
B - หน้ารูปภาพสินค้าบนมือถือ รูปภาพแสดงเลยจอ
โดย tsukasaz ศ 22 มิ.ย. 2018 10:06 am บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
0
12
ศ 22 มิ.ย. 2018 10:06 am โดย tsukasaz
B - หน้าข้อมูลสินค้าบนมือถือ รูปภาพแสดงเลยจอ
โดย tsukasaz ศ 22 มิ.ย. 2018 10:02 am บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
0
9
ศ 22 มิ.ย. 2018 10:02 am โดย tsukasaz
B - หน้ารายการสินค้าบนมือถือ สินค้าแสดงเลยพื้นหลัง
โดย tsukasaz ศ 22 มิ.ย. 2018 9:58 am บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
8
ศ 22 มิ.ย. 2018 4:21 pm โดย tsukasaz
B - หน้ารายการสินค้าบนมือถือ ตำแหน่งของสีไม่ถูกต้อง
โดย tsukasaz ศ 22 มิ.ย. 2018 9:55 am บอร์ด Doy-shop ( 15 พ.ค. - 29 พ.ค. 61)
1
8
ศ 22 มิ.ย. 2018 11:06 am โดย Parichat
งานประจำวันที่ 22 มิถุนายน 2561
โดย Parichat ศ 22 มิ.ย. 2018 8:52 am บอร์ด M061 - ปาริชาติ รัตโณภาส
1
3
ศ 22 มิ.ย. 2018 7:18 pm โดย Parichat