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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
สอบถามครับ ผมลง ubuntu 14.04 แล้วต่อเน็ตจากสาย LAN ไม่ได้
โดย tatiya จ 18 มี.ค. 2019 10:05 pm บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
1
จ 18 มี.ค. 2019 10:11 pm โดย tatiya
เเจกสูตรไข่ม้วนชีส
โดย สริญญา สมสา จ 18 มี.ค. 2019 5:34 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
7
จ 18 มี.ค. 2019 5:34 pm โดย สริญญา สมสา
วิธีการทำทับทิมกรอบ
โดย สริญญา สมสา จ 18 มี.ค. 2019 5:03 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
2
จ 18 มี.ค. 2019 5:03 pm โดย สริญญา สมสา
คำนวณค่าเสื่อมราคายังไคะ
โดย kulanan2535 จ 18 มี.ค. 2019 4:49 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
5
จ 18 มี.ค. 2019 4:49 pm โดย kulanan2535
5 ร้านอาหารญี่ปุ่นเเละซูชิถูกเเละอร่อย
โดย สริญญา สมสา จ 18 มี.ค. 2019 4:23 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
3
จ 18 มี.ค. 2019 4:23 pm โดย สริญญา สมสา
list ความรู้ที่มีว่าเคยเรียน หรือ เคยทำอะไรมาบ้าง
โดย napharat079 จ 18 มี.ค. 2019 3:37 pm บอร์ด M079 - นภารัตน์ ฐิติกรโกวิท
0
12
จ 18 มี.ค. 2019 3:37 pm โดย napharat079
list ความรู้ที่มี ว่าเคยเรียน หรือ เคยทำอะไรมาบ้าง
โดย kulanan2535 จ 18 มี.ค. 2019 3:26 pm บอร์ด M078 - กุลนันทน์ อุ่นเรือน
0
14
จ 18 มี.ค. 2019 3:26 pm โดย kulanan2535
วัดถ้ำเขาหลวงสถานที่ท่องเที่ยวธรรมชาติที่ต้องไปสัมผัส
โดย napharat079 จ 18 มี.ค. 2019 3:03 pm บอร์ด M079 - นภารัตน์ ฐิติกรโกวิท
0
7
จ 18 มี.ค. 2019 3:03 pm โดย napharat079
การเดินทางจากน่านไปกรุงเทพ
โดย kulanan2535 จ 18 มี.ค. 2019 3:00 pm บอร์ด M078 - กุลนันทน์ อุ่นเรือน
0
6
จ 18 มี.ค. 2019 3:00 pm โดย kulanan2535
การยื่นภาษี
โดย สริญญา สมสา จ 18 มี.ค. 2019 2:59 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
5
จ 18 มี.ค. 2019 2:59 pm โดย สริญญา สมสา
G Suite เริ่มมีการปรับราคาขึ้น อีกแล้ว
โดย icphp จ 18 มี.ค. 2019 2:15 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
4
จ 18 มี.ค. 2019 2:15 pm โดย icphp
กรมสรรพากร คืออะไร
โดย สริญญา สมสา จ 18 มี.ค. 2019 12:16 pm บอร์ด ถาม - ตอบ ธุรกิจ กฏหมาย ภาษี บัญชี
0
3
จ 18 มี.ค. 2019 12:16 pm โดย สริญญา สมสา
งานประจำวันที่ 18 มีนาคม 2562
โดย kulanan2535 จ 18 มี.ค. 2019 11:26 am บอร์ด M078 - กุลนันทน์ อุ่นเรือน
2
18
จ 18 มี.ค. 2019 7:02 pm โดย kulanan2535
งานประจำวันที่ 18 มีนาคม 2562
โดย napharat079 จ 18 มี.ค. 2019 11:26 am บอร์ด M079 - นภารัตน์ ฐิติกรโกวิท
2
7
จ 18 มี.ค. 2019 7:21 pm โดย napharat079
Skype for Business และ Microsoft Teams
โดย Atomseed Suckseed จ 18 มี.ค. 2019 11:24 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
4
จ 18 มี.ค. 2019 11:24 am โดย Atomseed Suckseed
ไปญี่ปุ่นต้องกินอะไร
โดย สริญญา สมสา จ 18 มี.ค. 2019 11:12 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
6
จ 18 มี.ค. 2019 11:12 am โดย สริญญา สมสา
อยากทราบวิธีการ เขียน SQL เพื่อ Update ข้อมูล ตอนที่ติดตั้ง Extension ใน phpbb
โดย Ittichai_chupol จ 18 มี.ค. 2019 10:25 am บอร์ด Programming - PHP
2
11
จ 18 มี.ค. 2019 4:04 pm โดย Ittichai_chupol
งานประจำวันที่ 18 มีนาคม 2562
โดย Four จ 18 มี.ค. 2019 10:17 am บอร์ด M077 - อิษยา งามสอาด
1
6
จ 18 มี.ค. 2019 7:42 pm โดย Four
งานประจำวันที่ 18 มีนาคม 2562
โดย สริญญา สมสา จ 18 มี.ค. 2019 9:35 am บอร์ด MT32 - นางสาวสริญญา สมสา
1
5
จ 18 มี.ค. 2019 5:09 pm โดย สริญญา สมสา
หากไม่ได้ไปใช้สิทธิเลือกตั้งสมาชิกสภาผู้แทนราษฎร จะมีผลอย่างไร และควรทำอย่างไร
โดย saibennn9 อ 17 มี.ค. 2019 10:05 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
1
29
จ 18 มี.ค. 2019 9:15 am โดย Yoon007