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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ชอบ Feature นี้ของ Joomla ตัวช่วยตรวจสอบ โครงสร้างตารางเวลามีการอัพเกรด
โดย mindphp พ 13 พ.ย. 2019 8:41 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
19
พ 13 พ.ย. 2019 8:41 pm โดย mindphp
งานประจำวันที่ 13 พฤศจิกายน 2562
โดย numtan5839 พ 13 พ.ย. 2019 10:09 am บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
4
23
พ 13 พ.ย. 2019 9:31 pm โดย thatsawan
Generate QR Code
โดย chaiyasitpraphut พ 13 พ.ย. 2019 7:03 pm บอร์ด MindPHP News / Feedback
0
18
พ 13 พ.ย. 2019 7:03 pm โดย chaiyasitpraphut
การใช้ CSS selectors เพื่ออ้างอิง h1 tag ที่อยุ่ข้างใน div
โดย bankjittapol พ 13 พ.ย. 2019 6:49 pm บอร์ด CSS Knowledge
1
8
พ 13 พ.ย. 2019 6:52 pm โดย mindphp
ประโยชน์ของ IOT - internet of things
โดย chaiyasitpraphut พ 13 พ.ย. 2019 6:49 pm บอร์ด IOT - Internet of things
0
5
พ 13 พ.ย. 2019 6:49 pm โดย chaiyasitpraphut
วิธีการเพิ่ม css ให้กับ class โดยใช้ js
โดย Ittichai_chupol พ 13 พ.ย. 2019 6:41 pm บอร์ด Jquery & Ajax Knowledge
0
6
พ 13 พ.ย. 2019 6:41 pm โดย Ittichai_chupol
ติดตั้ง Broad ESP8266 ลงบน Arduino IDE
โดย chaiyasitpraphut พ 13 พ.ย. 2019 6:37 pm บอร์ด IOT - Internet of things
0
3
พ 13 พ.ย. 2019 6:37 pm โดย chaiyasitpraphut
ทำไมตั้งค่าเมล แบบ POP3 ใน Android ไม่ได้ครับ
โดย chatee supasand พ 13 พ.ย. 2019 6:29 pm บอร์ด Mobile Programming - Android, iOS, Window Phone
2
13
พ 13 พ.ย. 2019 7:01 pm โดย chatee supasand
VDO - โปรแกรมคำนวณอัตราแลกเปลี่ยนสกุลเงิน
โดย numtan5839 พฤ 07 พ.ย. 2019 4:05 pm บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
20
112
พ 13 พ.ย. 2019 6:24 pm โดย mindphp
แนะนำ tools Online
โดย chaiyasitpraphut พ 13 พ.ย. 2019 6:21 pm บอร์ด MindPHP News / Feedback
0
8
พ 13 พ.ย. 2019 6:21 pm โดย chaiyasitpraphut
ปัญหาในการใช้งานเครื่องมือออนไลน์
โดย chaiyasitpraphut พ 13 พ.ย. 2019 6:21 pm บอร์ด MindPHP News / Feedback
0
7
พ 13 พ.ย. 2019 6:21 pm โดย chaiyasitpraphut
แนะนำ Website Free Icon
โดย numtan5839 พ 13 พ.ย. 2019 5:59 pm บอร์ด Graphic design
0
12
พ 13 พ.ย. 2019 5:59 pm โดย numtan5839
เพชรแท้จะไม่ติดสีหมึก จริงหรือ
โดย jiraporn66 พ 13 พ.ย. 2019 4:52 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
7
พ 13 พ.ย. 2019 4:52 pm โดย jiraporn66
VDO - Program Check Tracking Thailand Post
โดย numtan5839 อ 12 พ.ย. 2019 2:12 pm บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
3
18
พ 13 พ.ย. 2019 4:51 pm โดย thatsawan
NB‑IoT คืออะไร
โดย chaiyasitpraphut พ 13 พ.ย. 2019 4:46 pm บอร์ด IOT - Internet of things
0
5
พ 13 พ.ย. 2019 4:46 pm โดย chaiyasitpraphut
งานประจำวันที่ 13 พฤศจิกายน 2562
โดย chaiyasitpraphut พ 13 พ.ย. 2019 9:50 am บอร์ด MT35 - นายชัยยะสิทธิ์ พระพุทธ
7
40
พ 13 พ.ย. 2019 7:22 pm โดย chaiyasitpraphut
report แจ้งปัญหา เวลาสมัครกดเลือกภาษา แล้วเด้งกลับไปหน้าก่อนหน้า
โดย chatee supasand พ 13 พ.ย. 2019 4:04 pm บอร์ด MindPHP News / Feedback
2
12
พ 13 พ.ย. 2019 6:59 pm โดย mindphp
ระหว่าง joomla กับ wordpress แตกต่างกันยังไงครับ
โดย aloha11x พ 13 พ.ย. 2019 2:12 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS CRM
0
11
พ 13 พ.ย. 2019 2:12 pm โดย aloha11x
แนะนำ website สำหรับปรับขนาดรูปภาพ
โดย numtan5839 พ 13 พ.ย. 2019 2:07 pm บอร์ด Graphic design
0
9
พ 13 พ.ย. 2019 2:07 pm โดย numtan5839
Application Blynk
โดย chaiyasitpraphut พ 13 พ.ย. 2019 1:37 pm บอร์ด IOT - Internet of things
0
6
พ 13 พ.ย. 2019 1:37 pm โดย chaiyasitpraphut