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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ขอความช่วยเหลือ PyCharm
โดย kaao_19 จ 18 พฤษภาคม 2020 10:35 pm บอร์ด Programming - C/C++ & java & Python
2
967
อ 19 พฤษภาคม 2020 1:23 am โดย kaao_19
สรุปการเรียนรู้ประจำวัน 18/05/63
โดย sirirat จ 18 พฤษภาคม 2020 9:42 pm บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
0
13
จ 18 พฤษภาคม 2020 9:42 pm โดย sirirat
มาทำความรู้จักกับจังหวัดกระบี่ สำหรับผู้สนใจจะมาท่องเที่ยว
โดย sirirat จ 18 พฤษภาคม 2020 5:05 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
47
จ 18 พฤษภาคม 2020 5:05 pm โดย sirirat
สอบถาม ผมกำลังทำ gitlab CI สร้างไฟล์ yml มาแล้วแต่ตอนทำงานมันเป็นแบบนี้ครับเป็นเพราะอะไรครับ
โดย jirawoot จ 18 พฤษภาคม 2020 5:04 pm บอร์ด Programming - C/C++ & java & Python
1
116
อ 19 พฤษภาคม 2020 7:33 pm โดย jirawoot
วิธีการเดินทางจาก จ.กระบี่ มา กทม.
โดย sirirat จ 18 พฤษภาคม 2020 2:49 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
45
จ 18 พฤษภาคม 2020 2:49 pm โดย sirirat
อยากทราบวิธีการ แปลง ไฟล์ html มาเป็น pdf
โดย Ittichai_chupol จ 18 พฤษภาคม 2020 12:26 pm บอร์ด Programming - PHP
2
53
พ 20 พฤษภาคม 2020 1:39 pm โดย Ittichai_chupol
งานประจำวันที่ 18 พฤษภาคม 2563
โดย sirirat จ 18 พฤษภาคม 2020 10:50 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
3
43
จ 18 พฤษภาคม 2020 6:43 pm โดย sirirat
list ความรู้ที่มี ว่าเคยเรียน หรือ เคยทำอะไรมาบ้าง
โดย sirirat จ 18 พฤษภาคม 2020 10:48 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
3
40
จ 18 พฤษภาคม 2020 11:03 am โดย sirirat
NOTE
โดย sirirat จ 18 พฤษภาคม 2020 10:47 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
0
3
จ 18 พฤษภาคม 2020 10:47 am โดย sirirat
Work's on Hand ศิริรัตน์ ทิพย์น้อย M102
โดย sirirat จ 18 พฤษภาคม 2020 10:46 am บอร์ด M102 - ศิริรัตน์ ทิพย์น้อย
0
8
จ 18 พฤษภาคม 2020 10:46 am โดย sirirat
เปิดให้ลงทะเบียนร้านค้าแล้วที่ www.ไทยชนะ.com พร้อมรับ New Normal ควมคุมโรคระบาดโควิด 19
โดย thatsawan ส 16 พฤษภาคม 2020 6:01 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
105
ส 16 พฤษภาคม 2020 6:01 pm โดย thatsawan
B - เข้าสู่ระบบเอง เเละออกจากหน้าเว็บไม่ได้
โดย thatsawan ศ 15 พฤษภาคม 2020 7:00 pm บอร์ด Odoojob.com - Tester
1
5
ศ 15 พฤษภาคม 2020 8:03 pm โดย thatsawan
SSL หมดอายุ Enginx โชว์ข้อความ This is a placeholder for the subdomain โดเมน.com ที่มีปัญหา
โดย mindphp พฤ 14 พฤษภาคม 2020 5:58 pm บอร์ด Linux - Web Server
0
147
พฤ 14 พฤษภาคม 2020 5:58 pm โดย mindphp
ตัวช่วยในการคำนวณภาษีรถยนต์
โดย prmindphp พ 13 พฤษภาคม 2020 7:05 pm บอร์ด MindPHP News & Feedback
0
95
พ 13 พฤษภาคม 2020 7:05 pm โดย prmindphp
อยากทราบวิธีการ Export จาก html มาเป็น Excel โดยใช้ php
โดย Ittichai_chupol พ 13 พฤษภาคม 2020 6:26 pm บอร์ด Programming - PHP
2
74
พ 13 พฤษภาคม 2020 7:36 pm โดย Ittichai_chupol
สอบถามวิธีการทำให้หน้าเว็บปรับขนาดตามจอค่ะ
โดย Anonymous อ 12 พฤษภาคม 2020 11:35 pm บอร์ด HTML CSS
4
183
พ 13 พฤษภาคม 2020 8:52 pm โดย บุคคลทั่วไป
ตั้งค่าความกว้างของรูป 100% ในส่วนเสริม Latest News Enhanced ยังไงครับ
โดย toonytoony2004 จ 11 พฤษภาคม 2020 8:30 pm บอร์ด Joomla Development
1
253
อ 12 พฤษภาคม 2020 2:38 pm โดย tsukasaz
สอบถามวิธีการคำนวน sum(prices) แบบรายปี
โดย Anonymous อ 10 พฤษภาคม 2020 9:25 am บอร์ด Programming - PHP
2
566
อ 12 พฤษภาคม 2020 8:34 am โดย บุคคลทั่วไป
สอบถามการเพิ่มข้อมูลลงฐานข้อมูลค่ะ php, mysql
โดย Anonymous ศ 08 พฤษภาคม 2020 11:20 pm บอร์ด Programming - PHP
12
4861
พ 03 มิ.ย. 2020 9:55 am โดย Sirayu
วิธีบันทึกข้อมูลเข้ารหัสmd5
โดย champp ศ 08 พฤษภาคม 2020 5:55 pm บอร์ด PHP Knowledge
0
1009
ศ 08 พฤษภาคม 2020 5:55 pm โดย champp