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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
Q :ต้องการบันทึกข้อมูลการคำนวนระยะทางตอนที่ผู้ใช้งานค้นหาจากจังหวัดต้นทางและจังหวัดปลายทาง ใน Joomla
โดย Parichat อ 20 ก.พ. 2018 6:43 pm บอร์ด Joomla Development
1
10
อ 20 ก.พ. 2018 7:31 pm โดย tsukasaz
Modals (โม'เดิล)-Plugin ที่ทำให้เชื่อมโยงที่เปิดในป็อปอัพโมเดิล
โดย Parichat อ 20 ก.พ. 2018 6:20 pm บอร์ด Joomla Extension Review
0
4
อ 20 ก.พ. 2018 6:20 pm โดย Parichat
การใช้งาน Python GUI (Tkinter) :Create List box (สร้างกล่องรายการ)
โดย Jom07 อ 20 ก.พ. 2018 3:07 pm บอร์ด Python Knowledge
0
13
อ 20 ก.พ. 2018 3:07 pm โดย Jom07
คู่มือ VDO
โดย tsukasaz อ 20 ก.พ. 2018 2:58 pm บอร์ด RTP - Right To Play Thailand Foundation (7 ก.พ. - 15 มิ.ย.61)
0
3
อ 20 ก.พ. 2018 2:58 pm โดย tsukasaz
ประชุมทีม
โดย tsukasaz อ 20 ก.พ. 2018 2:57 pm บอร์ด RTP - Right To Play Thailand Foundation (7 ก.พ. - 15 มิ.ย.61)
0
1
อ 20 ก.พ. 2018 2:57 pm โดย tsukasaz
ไฟล์ตัวติดตั้ง
โดย tsukasaz อ 20 ก.พ. 2018 2:57 pm บอร์ด RTP - Right To Play Thailand Foundation (7 ก.พ. - 15 มิ.ย.61)
0
1
อ 20 ก.พ. 2018 2:57 pm โดย tsukasaz
รายงานความคืบหน้า / Progress
โดย tsukasaz อ 20 ก.พ. 2018 2:56 pm บอร์ด RTP - Right To Play Thailand Foundation (7 ก.พ. - 15 มิ.ย.61)
0
1
อ 20 ก.พ. 2018 2:56 pm โดย tsukasaz
G - ข้อมูลสำหรับทำระบบ RTP - ระบบติดตามและประเมินผลและบริหารข้อมูลโครงการ
โดย mindphp อ 20 ก.พ. 2018 2:05 pm บอร์ด RTP - Right To Play Thailand Foundation (7 ก.พ. - 15 มิ.ย.61)
1
7
อ 20 ก.พ. 2018 4:04 pm โดย mindphp
การทำงานของ Front-End กับ Back-End
โดย Before Dong อ 20 ก.พ. 2018 9:57 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
16
อ 20 ก.พ. 2018 9:57 am โดย Before Dong
Q :ต้องการให้ระยะทางที่คำนวนได้มาแสดง โดยได้มาจากจังหวัดต้นทางและปลายทางที่กำหนดค่า default เอาไว้
โดย Parichat จ 19 ก.พ. 2018 5:48 pm บอร์ด Joomla Development
25
112
อ 20 ก.พ. 2018 7:16 pm โดย tsukasaz
package tkFileDialog (python 2) เปลี่ยนตัวแปรเป็น filedialog (python 3)
โดย Jom07 จ 19 ก.พ. 2018 5:35 pm บอร์ด Python Knowledge
0
14
จ 19 ก.พ. 2018 5:35 pm โดย Jom07
Q :ต้องการให้ listbox selected จากรายการที่เคยคำนวนระยะทางมาก่อนแล้วใน Joomla
โดย Parichat จ 19 ก.พ. 2018 3:32 pm บอร์ด Joomla Development
10
53
จ 19 ก.พ. 2018 4:36 pm โดย Parichat
Remote & Local Image Manager(รีโมทแอนโลคอลอิมเมจเมเนเจอ)-Component จัดการไฟล์ภาพและสื่อบนโฮสต์ FTP ภายในและระยะไกล
โดย Parichat จ 19 ก.พ. 2018 2:13 pm บอร์ด Joomla Extension Review
0
20
จ 19 ก.พ. 2018 2:13 pm โดย Parichat
ช่วยด้วยค่ะติดตั้ง component ที่ดาวโหลดมาไม่ได้ค่ะ
โดย Parichat จ 19 ก.พ. 2018 12:28 pm บอร์ด Joomla Development
2
23
จ 19 ก.พ. 2018 1:45 pm โดย Parichat
Android ดึงข้อมูล Json จาก Web server มาใส่ใน app ไม่ขึ้น แต่เรียกดูผ่าน Web browser ขึ้น
โดย Anonymous จ 19 ก.พ. 2018 12:02 pm บอร์ด Mobile Programming - Android, iOS, Window Phone
0
26
จ 19 ก.พ. 2018 12:02 pm โดย บุคคลทั่วไป
วิวัฒนาการของ Ram กับ Liverpool
โดย Before Dong จ 19 ก.พ. 2018 10:55 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
26
จ 19 ก.พ. 2018 10:55 am โดย Before Dong
เจอปัญหา เข้าเมล roundcube ไม่ได้ เจอ Error connection to storage server failed
โดย mindphp อ 18 ก.พ. 2018 7:16 pm บอร์ด Linux - Web Server
0
19
อ 18 ก.พ. 2018 7:16 pm โดย mindphp
แก้ปัญหา ส่งเมลไม่ออก Roundcube: SMTP Error (-1): Connection to server failed.
โดย mindphp อ 18 ก.พ. 2018 6:16 pm บอร์ด Linux - Web Server
1
10
อ 18 ก.พ. 2018 6:35 pm โดย mindphp
ปัญหาเมล Mail Server exim Start ไม่ขึ้น บน Ubuntu
โดย mindphp อ 18 ก.พ. 2018 5:40 pm บอร์ด Linux - Web Server
1
13
อ 18 ก.พ. 2018 5:46 pm โดย mindphp
โหลดไฟล์ joomshopping ไม่ได้
โดย Jao SaCk อ 18 ก.พ. 2018 4:33 am บอร์ด Joomla Development
3
23
จ 19 ก.พ. 2018 3:58 am โดย mindphp