ให้เรตสมาชิก: 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 - วิธีแก้ไข้ error จากการสร้าง extension เพื่อให้แสดง module ที่แถบเมนู ใน PHPBB
โดย Ittichai_chupol พฤ 18 ต.ค. 2018 7:27 pm บอร์ด Programming - PHP
0
4
พฤ 18 ต.ค. 2018 7:27 pm โดย Ittichai_chupol
มาดูปัญหาจอคอมที่แผนกไอทีต้องเจอ
โดย tai14 พฤ 18 ต.ค. 2018 6:15 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
11
พฤ 18 ต.ค. 2018 6:15 pm โดย tai14
VDO - รีวิว Module product labels (โมดูล โปรดักส์ เลเบลส์) สำหรับแสดงสินค้าที่ติดป้ายกำกับ
โดย pprn พฤ 18 ต.ค. 2018 5:59 pm บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
4
พฤ 18 ต.ค. 2018 5:59 pm โดย pprn
งานประจำวันที่ 18 ตุลาคม 2561
โดย pprn พฤ 18 ต.ค. 2018 10:11 am บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
1
4
พฤ 18 ต.ค. 2018 7:12 pm โดย pprn
งานประจำวันที่ 18 ตุลาคม 2561
โดย Ittichai_chupol พฤ 18 ต.ค. 2018 10:08 am บอร์ด M070 - อิทธิชัย ชูผล
1
2
พฤ 18 ต.ค. 2018 7:33 pm โดย Ittichai_chupol
งานประจำวันที่ 18 ตุลาคม 2561
โดย tai14 พฤ 18 ต.ค. 2018 10:04 am บอร์ด MT26 - นางสาวอัครยุภา ยงยุทธ
1
5
พฤ 18 ต.ค. 2018 7:27 pm โดย tai14
VDO - วิธีการแปลงไฟล์ไพธอนเป็นไฟล์ .exe
โดย prakon พฤ 18 ต.ค. 2018 10:04 am บอร์ด MT24 - นายปกรณ์ วิริยะธนวิโรจน์
0
7
พฤ 18 ต.ค. 2018 10:04 am โดย prakon
งานประจำวันที่ 18 ตุลาคม 2561
โดย prakon พฤ 18 ต.ค. 2018 10:00 am บอร์ด MT24 - นายปกรณ์ วิริยะธนวิโรจน์
1
8
พฤ 18 ต.ค. 2018 7:18 pm โดย prakon
งานประจำวันที่ 18 ตุลาคม 2561
โดย nice_13 พฤ 18 ต.ค. 2018 9:55 am บอร์ด M071 - พิชญ์สินี คงจร
2
7
พฤ 18 ต.ค. 2018 7:08 pm โดย nice_13
เเนะนำเรียนต่อต่างประเทศ
โดย Anonymous พ 17 ต.ค. 2018 10:09 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
8
พ 17 ต.ค. 2018 10:09 pm โดย บุคคลทั่วไป
Q - สอบถามวิธีการเแปลงไฟล์ Python เป็นไฟล์ .exe ครับ
โดย prakon พ 17 ต.ค. 2018 7:37 pm บอร์ด Programming - C/C++ & java & Python
1
21
พฤ 18 ต.ค. 2018 7:32 pm โดย tatiya
VDO - รีวิว Module Manufacturer สำหรับแสดงผู้ผลิตสินค้า
โดย pprn พ 17 ต.ค. 2018 6:55 pm บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
6
พ 17 ต.ค. 2018 6:55 pm โดย pprn
R - mdsoft_translate_posts ปรับเปลี่ยนแทมเพลตและภาษา
โดย Ittichai_chupol พ 17 ต.ค. 2018 6:34 pm บอร์ด ThaiVI - Developer
0
13
พ 17 ต.ค. 2018 6:34 pm โดย Ittichai_chupol
VDO - รีวิว Module Bestseller (โมดูล เบสต์เซลเลอร์) สำหรับแสดงสินค้าขายดี
โดย pprn พ 17 ต.ค. 2018 6:29 pm บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
7
พ 17 ต.ค. 2018 6:29 pm โดย pprn
R - mdsoft_show_member_post การแสดงข้อมูลของสมาชิก
โดย Ittichai_chupol พ 17 ต.ค. 2018 6:27 pm บอร์ด ThaiVI - Developer
1
12
พฤ 18 ต.ค. 2018 6:04 pm โดย mindphp
VDO - รีวิว Module currency (โมดูล เคอเร็นซิ) สำหรับเลือกสกุลเงินของสินค้า
โดย pprn พ 17 ต.ค. 2018 5:43 pm บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
5
พ 17 ต.ค. 2018 5:43 pm โดย pprn
VDO - รีวิว Module Latest products (โมดูล เลทเอ็ซท์ โปรดักส์) สำหรับแสดงสินค้าล่าสุด
โดย pprn พ 17 ต.ค. 2018 4:49 pm บอร์ด MT25 - นางสาวปรียากมล รินนาศักดิ์
0
6
พ 17 ต.ค. 2018 4:49 pm โดย pprn
เมื่อหัดเขียนเว็บไซต์ครั้งแรก
โดย tai14 พ 17 ต.ค. 2018 4:39 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
19
พ 17 ต.ค. 2018 4:39 pm โดย tai14
B - สรุป Review เว็บไซต์ zirishoes.com
โดย tsukasaz พ 17 ต.ค. 2018 12:14 pm บอร์ด สิริกิตติรัตน์ - Tester
2
19
พฤ 18 ต.ค. 2018 1:12 pm โดย Parichat
ขออนุญาตสอบถามครับ ผมมือใหม่
โดย 9kitti พ 17 ต.ค. 2018 11:25 am บอร์ด Programming - PHP
1
15
พ 17 ต.ค. 2018 12:18 pm โดย thatsawan