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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
สอบถามเรื่องวิทยุออนไลน์
โดย dekchaymax พฤ 23 เม.ย. 2020 11:10 am บอร์ด Mobile Programming - Android, iOS, Window Phone
6
606
พฤ 23 เม.ย. 2020 1:39 pm โดย dekchaymax
สร้างปุ่ม Social Share เพื่อแชร์คอนเทนต์ไปยังโซเชี่ยลมีเดียด้วย Content Msocial
โดย prmindphp พ 22 เม.ย. 2020 6:50 pm บอร์ด MindPHP News & Feedback
0
98
พ 22 เม.ย. 2020 6:50 pm โดย prmindphp
เราสามารถตั้ง Set PRIMARY KEY ว่าจะให้เริ่มต้นที่เลขอะไร ได้มั้ย
โดย thatsawan พ 22 เม.ย. 2020 6:07 pm บอร์ด SQL - Database
3
331
พ 22 เม.ย. 2020 7:20 pm โดย thatsawan
อยากทราบวิธีการ override ไฟล์ Quote มาใช้งานใน Extension ของ phpbb
โดย Ittichai_chupol พ 22 เม.ย. 2020 5:50 pm บอร์ด Programming - PHP
0
115
พ 22 เม.ย. 2020 5:50 pm โดย Ittichai_chupol
สร้าง Content Marketing เชื่อมกับสินค้าด้วย Content Product Match ของ MooZiiCart
โดย prmindphp อ 21 เม.ย. 2020 6:40 pm บอร์ด MindPHP News & Feedback
0
304
อ 21 เม.ย. 2020 6:40 pm โดย prmindphp
อยากให้แสดงเฉพาะคำที่ค้นหา ต้องเขียน code ยังไงครับ
โดย ajsudkedt อ 21 เม.ย. 2020 12:18 pm บอร์ด Programming - PHP
7
280
อ 21 เม.ย. 2020 2:21 pm โดย ajsudkedt
อยากทราบวิธีการแก้ไขปัญหาเรื่องการเรียกใช้งานการแจ้งเตือน ใน Extension ของ phpbb
โดย Ittichai_chupol อ 21 เม.ย. 2020 10:25 am บอร์ด Programming - PHP
1
308
อ 21 เม.ย. 2020 10:56 am โดย thatsawan
(Close)B - ล็อกอินเเล้ว เข้าไปเมนู หาคน จะเจอ error
โดย thatsawan จ 20 เม.ย. 2020 2:47 pm บอร์ด Odoojob.com - Tester
2
8
พฤ 21 พฤษภาคม 2020 5:23 pm โดย thatsawan
B - หน้า admin ส่วน Jobs List เพิ่มข้อมูลเเล้ว ตอนบันทึกขึ้น Warning Field required: About Us เเล้วข้อมูลที่กรอกก็หายไป
โดย thatsawan จ 20 เม.ย. 2020 2:38 pm บอร์ด Odoojob.com - Tester
0
2
จ 20 เม.ย. 2020 2:38 pm โดย thatsawan
การจำลองเซิร์ฟเวอร์ เขียน php ใน Windows 10 โดยใช้ IIS (Internet Information Service)
โดย tsukasaz จ 20 เม.ย. 2020 2:38 pm บอร์ด Share Knowledge
0
302
จ 20 เม.ย. 2020 2:38 pm โดย tsukasaz
flask: AttributeError: 'NoneType' object has no attribute 'medlist'
โดย penrudee อ 19 เม.ย. 2020 9:28 am บอร์ด Programming - C/C++ & java & Python
6
162
อ 21 เม.ย. 2020 8:59 am โดย penrudee
ทำไมถึงเกิด AttributeError: 'NonType' object has no attribute 'medlist'
โดย penrudee อ 19 เม.ย. 2020 8:02 am บอร์ด Programming - C/C++ & java & Python
1
351
อ 19 เม.ย. 2020 1:23 pm โดย mindphp
B - เข้าระบบด้วยข้อมูลจากเมลที่ได้ตอนสมัครงาน สามารถจัดการข้อมูลส่วนนายจ้างได้
โดย thatsawan ส 18 เม.ย. 2020 3:21 pm บอร์ด Odoojob.com - Tester
1
5
ศ 08 พฤษภาคม 2020 3:45 pm โดย thatsawan
B - ได้รับอีเมลให้ login คลิกตามลิงค์เเล้วหาที่ เข้าระบบไม่เจอ มันวิ่งกลับมา index
โดย thatsawan ส 18 เม.ย. 2020 3:14 pm บอร์ด Odoojob.com - Tester
1
9
ศ 08 พฤษภาคม 2020 3:44 pm โดย thatsawan
(Close)B - Template มี เมนูเกินมา
โดย thatsawan ส 18 เม.ย. 2020 3:05 pm บอร์ด Odoojob.com - Tester
1
6
ศ 15 พฤษภาคม 2020 6:34 pm โดย thatsawan
ประกันสังคมจ่ายเงินได้ ในกรณีว่างงานเนื่องจากเหตุสุดวิสัยที่เกิดจาก COVID-19 (มีผลใช้บังคับทางกฎหมายแล้ว)
โดย thatsawan ส 18 เม.ย. 2020 11:36 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
100
ส 18 เม.ย. 2020 11:36 am โดย thatsawan
20 อันดับรายชื่อ เศรษฐีไทยร่ำรวยที่สุดในประเทศไทย
โดย thatsawan ศ 17 เม.ย. 2020 8:22 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
198
ศ 17 เม.ย. 2020 8:22 pm โดย thatsawan
B - แทรก css เป็นแบบ internal ไว้
โดย tsukasaz ศ 17 เม.ย. 2020 6:43 pm บอร์ด Odoojob.com - Tester
0
3
ศ 17 เม.ย. 2020 6:43 pm โดย tsukasaz
B - คลิกเมนู คู่มือการใช้งาน แล้ว error
โดย tsukasaz ศ 17 เม.ย. 2020 5:18 pm บอร์ด Odoojob.com - Tester
1
3
ศ 17 เม.ย. 2020 7:53 pm โดย tsukasaz
B - เมนู components หลักหายไปหลายตัว ใน admin
โดย tsukasaz ศ 17 เม.ย. 2020 2:40 pm บอร์ด Odoojob.com - Tester
0
2
ศ 17 เม.ย. 2020 2:40 pm โดย tsukasaz